LINUX.ORG.RU

Gentoo laptop videocards


1

1

Привет всем. У меня есть достаточно современный ноутбук, на котором есть две видеокарты. Одна от nvidia и одна от intel. На него я хочу поставить gentoo. И у меня возник вопрос, который пока не удалось решить. При попытке запустить X с драйверами от nvidia пишет «No screen found». После размышлений я пришел к выводу, что это вполне логично, если у меня сейчас система использует видеокарту от Intel.

Далее я тчетно пытался заставить выводить что-либо на экран через видеокарту от nvidia (хотя бы через nouveau). Пусть даже пока без X сервера. Я пытался передавать параметры ядру при загрузке, в частности

nouveau.modeset=1
i915.modeset=0

где i915 - модуль драйверов для intel собранный при сборке ядра

После я пытался сделать аналогичные телодвижения через modprobe.d, в котором я делал тоже самое. Плюс пытался заблеклистить i915 чтобы он не загружался.

При всех этих попытках у меня просто слетало разрешение экрана на минимум но, судя по всему, карточка от nvidia не работала, а рисовалось все минимальными возможностями ядра через intel.

Далее я собрал ядро с поддержкой vgaswitcheroo.

Если загружать модули nouveau и i915 то vgaswitcheroo обнаруживает две видеокарты и начинает свою работу.

#lsmod
Module                  Size  Used by
nouveau               863603  0 
ttm                    61215  1 nouveau
dcdbas                  5089  0 
btusb                  11578  0 
bluetooth             185002  2 btusb
i915                  482726  1 
i2c_i801                9268  0 
drm_kms_helper         25131  2 nouveau,i915

#cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0

Далее пробую переключить

#echo "DDIS" > /sys/ker...oo/switch

И у меня перестает что-либо рисоваться на экране. Экран просто зависает. Подсоединяюсь по ssh и проверяю - все верно, выбрана дискретная видеокарта и интегрированная отключена. Смотрю

#dmesg | tail
[ 1913.185499] fbcon: Remapping primary device, fb0, to tty -63
[ 1913.196222] [drm] Cannot find any crtc or sizes - going 1024x768
[ 1913.196224] i915: switched off
Поскольку на экране ничего не рисутеся, то включаю обратно дискретную. Экран моргает и все снова работает.
#dmesg | tail
[ 2855.404055] i915: switched on
[ 2855.414190] i915 0000:00:02.0: setting latency timer to 64
[ 2855.448716] [drm] Enabling RC6 states: RC6 on, RC6p on, RC6pp off
[ 2855.994831] fbcon: Remapping primary device, fb0, to tty 1-63
[ 2855.994834] VGA switcheroo: switched nouveau off
[ 2855.995013] [drm] nouveau 0000:01:00.0: Disabling display...
[ 2855.995196] [drm] nouveau 0000:01:00.0: Disabling fbcon...
[ 2855.995198] [drm] nouveau 0000:01:00.0: Unpinning framebuffer(s)...
[ 2855.995285] [drm] nouveau 0000:01:00.0: Evicting buffers...
[ 2856.002018] [drm] nouveau 0000:01:00.0: Idling channels...
[ 2856.002019] [drm] nouveau 0000:01:00.0: Suspending GPU objects...
[ 2856.118746] [drm] nouveau 0000:01:00.0: And we're gone!
[ 2856.333947] nouveau 0000:01:00.0: power state changed by ACPI to D3hot
Если опять на nvidia, то так как устройство снова включается, что
#dmesg
[ 3003.622213] VGA switcheroo: switched nouveau on
[ 3003.622218] [drm] nouveau 0000:01:00.0: We're back, enabling device...
[ 3004.040116] nouveau 0000:01:00.0: power state changed by ACPI to D0
[ 3004.050881] [drm] nouveau 0000:01:00.0: POSTing device...
[ 3004.050885] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x850B
[ 3004.131703] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x8D1D
[ 3004.194586] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x6594
[ 3004.194587] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xA72B
[ 3004.194588] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xA72C
[ 3004.314513] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xA7E4
[ 3004.314514] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xA849
[ 3004.314516] [drm] nouveau 0000:01:00.0: Restoring GPU objects...
[ 3004.322338] [drm] nouveau 0000:01:00.0: Reinitialising engines...
[ 3004.322344] [drm] nouveau 0000:01:00.0: Restoring mode...
[ 3004.424473] fbcon: Remapping primary device, fb1, to tty 1-63
[ 3004.435193] [drm] Cannot find any crtc or sizes - going 1024x768
[ 3004.435196] i915: switched off
Если опять передавать параметрами modeset и блеклистить intel, то vgaswitcheroo просто не загружется, так как, видимо, не находит, что именно можно переключать.

В итоге я не знаю, что делать и как заставить работать карточку от nvidia. Хотел отключить в bios карточку от intel, но в биосе тупо нет возможности это сделать.

Может сталкивался кто с такой проблемой? Что делать? Желательно бы иметь работающие две карточки, чтобы можно было переключать их, пусть и с рестартом x сервера.

Вот некоторые параметры железа и логи:

#lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 650M] (rev a1)

#dmesg | grep -i vga
[0.000000] Console: colour VGA+ 80x25
[0.291324] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[0.291475] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=none,locks=none
[0.291620] vgaarb: loaded
[0.291712] vgaarb: bridge control possible 0000:01:00.0
[0.291810] vgaarb: no bridge control possible 0000:00:02.0
[2.394070] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG0.PEGP handle
[2.416790] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=none:owns=io+mem
[2.416791] vgaarb: transferring owner from PCI:0000:00:02.0 to PCI:0000:01:00.0
[3.466109] vga_switcheroo: enabled
#dmesg | grep nouveau
[    2.394089] nouveau 0000:01:00.0: enabling device (0006 -> 0007)
[    3.460320] [drm] nouveau 0000:01:00.0: Detected an NVe0 generation card (0x0e7110a2)
[    3.462399] [drm] nouveau 0000:01:00.0: acceleration disabled by default, pass noaccel=0 to force enable
[    3.466116] [drm] nouveau 0000:01:00.0: Checking PRAMIN for VBIOS
[    3.514166] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    3.514168] [drm] nouveau 0000:01:00.0: Checking PROM for VBIOS
[    3.514222] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    3.514223] [drm] nouveau 0000:01:00.0: Checking ACPI for VBIOS
[    4.349168] [drm] nouveau 0000:01:00.0: ... BIOS checksum invalid
[    4.349172] [drm] nouveau 0000:01:00.0: Checking PCIROM for VBIOS
[    4.349173] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    4.349174] [drm] nouveau 0000:01:00.0: Using VBIOS from ACPI
[    4.349176] [drm] nouveau 0000:01:00.0: BIT BIOS found
[    4.349178] [drm] nouveau 0000:01:00.0: Bios version 80.07.35.00
[    4.349180] [drm] nouveau 0000:01:00.0: TMDS table version 2.0
[    4.349335] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[    4.349336] [drm] nouveau 0000:01:00.0: DCB version 4.0
[    4.349338] [drm] nouveau 0000:01:00.0: DCB outp 00: 02000f00 00000000
[    4.349340] [drm] nouveau 0000:01:00.0: DCB conn 00: 00000000
[    4.349355] [drm] nouveau 0000:01:00.0: Adaptor not initialised, running VBIOS init tables.
[    4.349357] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x850B
[    4.450309] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x8D1D
[    4.513196] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x6594
[    4.513197] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xA72B
[    4.513198] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xA72C
[    4.633126] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xA7E4
[    4.633127] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xA849
[    4.635754] [drm] nouveau 0000:01:00.0: Detected 2048MiB VRAM (GDDR5)
[    4.640632] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[    4.645112] [drm] nouveau 0000:01:00.0: ACPI backlight interface available, not registering our own
[    4.645114] [drm] nouveau 0000:01:00.0: voltage table 0x50 unknown
[    4.651178] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[    4.651181] [drm] nouveau 0000:01:00.0: 1: core 202MHz shader 405MHz memory 405MHz voltage 490mV
[    4.651183] [drm] nouveau 0000:01:00.0: 2: core 400MHz shader 800MHz memory 1080MHz voltage 560mV
[    4.651185] [drm] nouveau 0000:01:00.0: 3: core 1000MHz shader 2000MHz memory 1080MHz voltage 570mV
[    4.651186] [drm] nouveau 0000:01:00.0: c:
[    4.663870] [drm] nouveau 0000:01:00.0: allocated 1024x768 fb: 0xe0000, bo ffff880232021400
[    4.663896] fb1: nouveaufb frame buffer device
[    4.663899] [drm] Initialized nouveau 1.0.0 20120316 for 0000:01:00.0 on minor 1
#dmesg | grep i915
[    2.382374] i915 0000:00:02.0: setting latency timer to 64
[    2.416638] i915 0000:00:02.0: irq 45 for MSI/MSI-X
[    3.460052] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0

P.S. Так как я планировал использовать nvidia драйвера, то я собрал ядро в соответствии с инструкциями, т.е. отключил

Device Drivers --->
Graphics Support --->
< >   nVidia Framebuffer Support
< >   nVidia Riva support

Правда, у меня не включен VESA VGA graphics support. Я попробую, как вернусь домой, ключить эту опцию.

P.P.S Если блеклистить nouveau и сразу загружать nvidia, то vgaswitcheroo также не загружается.


bumblebee

1. nouveau сразу выкинь, оно не нужно 2. запускать приложения, которым требуется nvidia - primus'ом 3. VIDEO_CARDS=«intel i965 nvidia», в ядре i915 включить

anonymous
()
Ответ на: комментарий от anonymous

спасибо, кэп. Вообще-то это был вопрос ТСу: «bumblebee пробовал?»

leave ★★★★★
()
Последнее исправление: leave (всего исправлений: 1)

Не знал о существовании bubmlebee.

Поставил bumblebee. Убрал xorg.conf от nvidia.

#bumblebeed --daemon
#startx

Иксы запустились.

#optirun glxgears
[ERROR] Can't access secondary GPU error: [Xorg](EE) failed to load module "mouse" (module doesn't exist, 0)
#dmesg | tail 
  232.504852] bbswitch: version 0.5
[  232.504859] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[  232.504864] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.PEG0.PEGP
[  232.505069] bbswitch: detected an Optimus _DSM function
[  232.505075] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
[  232.513005] bbswitch: disabling discrete graphics
[  232.523873] pci 0000:01:00.0: Refused to change power state, currently in D0
[  232.739642] pci 0000:01:00.0: power state changed by ACPI to D3cold
[  236.040235] bbswitch: enabling discrete graphics
[  236.458290] pci 0000:01:00.0: power state changed by ACPI to D0
[  236.472238] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=none,decodes=none:owns=none
[  236.472383] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  304.64  Tue Oct 30 10:58:20 PDT 2012
#cat /etc/bumblebee/bumblebee.conf
[bumblebeed]
VirtualDisplay=:8
KeepUnusedXServer=false
ServerGroup=bumblebee
TurnCardOffAtExit=false
NoEcoModeOverride=false
Driver=nvidia

[optirun]
VGLTransport=proxy
AllowFallbackToIGC=false

[driver-nvidia]
KernelDriver=nvidia
Module=nvidia
PMMethod=auto
LibraryPath=/usr/lib64/opengl/nvidia/lib:/usr/lib32/opengl/nvidia/lib:/usr/lib/opengl/nvidia/lib
XorgModulePath=/usr/lib64/opengl/nvidia/lib,/usr/lib64/opengl/nvidia/extensions,/usr/lib64/xorg/modules/drivers,/usr/lib64/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau
#cat /etc/bumblebee/xorg.conf.nvidia
Section "ServerLayout"
    Identifier "Layout0"
    Option "AutoAddDevices" "false"
EndSection

Section "Device"
    Identifier "Device1"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    Option "NoLogo" "true"
    Option "UseEDID" "false"
    Option "ConnectedMonitor" "DFP"
EndSection

Так как устройство прописано под номером восемь, то смотрим:

#cat /var/log/Xorg.8.log
...
[  1013.875] (==) |-->Input Device "<default pointer>"
[  1013.875] (==) |-->Input Device "<default keyboard>"
[  1013.875] (==) The core pointer device wasn't specified explicitly in the layout.
        Using the default mouse configuration.
[  1013.875] (==) The core keyboard device wasn't specified explicitly in the layout.
        Using the default keyboard configuration.
...
[  1013.876] (II) LoadModule: "glx"
...
[  1013.883] (II) LoadModule: "nvidia"
...
[  1013.883] (II) LoadModule: "mouse"
[  1013.883] (WW) Warning, couldn't open module mouse
[  1013.883] (II) UnloadModule: "mouse"
[  1013.883] (II) Unloading mouse
[  1013.883] (EE) Failed to load module "mouse" (module does not exist, 0)
[  1013.883] (II) LoadModule: "kbd"
[  1013.884] (WW) Warning, couldn't open module kbd
[  1013.884] (II) UnloadModule: "kbd"
[  1013.884] (II) Unloading kbd
[  1013.884] (EE) Failed to load module "kbd" (module does not exist, 0)
...
[  1014.081] (EE) Screen(s) found, but none have a usable configuration.

Не может найти мышь и клавиатуру. Модули «mouse» и т.п. вкомпилины в ядро системы. Если это те модули о которых я подумал. И мне кажется несколько странным делать их в качестве подгружаемых модулей. В чем может быть проблема?

summon
() автор топика

optirun заработал. Именил в конфиге

#   Option "ConnectedMonitor" "DFP"
    Option "UseDisplayDevice" "none"

Только теперь у меня проблема с производительностью. Вот выхлоп от

optirun glxspheres
221.460223 frames/sec - 247.149609 Mpixels/sec
223.872140 frames/sec - 249.841308 Mpixels/sec
209.541430 frames/sec - 233.848236 Mpixels/sec
132.101300 frames/sec - 147.425050 Mpixels/sec
80.708209 frames/sec - 90.070361 Mpixels/sec
83.124007 frames/sec - 92.766392 Mpixels/sec
81.877252 frames/sec - 91.375013 Mpixels/sec
85.779931 frames/sec - 95.730403 Mpixels/sec
82.111068 frames/sec - 91.635951 Mpixels/sec

Падает фпс почти сразу. Посмотрел sensors - температура выше 52 не поднимается. При изменении параметров glxspheres -c yuv фпс также падает, но чуть выше. Да и вообще мне кажется что как-то уж больно слабовато даже в самом начале.

И все-таки, как заставить работать дискретную видеокарту без всяких бамблби и оптиранов?

summon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.