Configuring Linux to work with NVidia Hybrid SLI Technology
First of all, at the time of this writing, NVIDIA Hybrid SLI Technology is not supported on Linux and without proper configuration, you won’t even be able to load your Desktop Environment such as Xfce.
That’s not the only problem, based on an interview with NVIDIA’s Tom Petersen, one of its main feature is called HybridPower which basically allows users to shut off the graphics card when not needed and dramatically reduce power consumption. This means, there is a possibility that if we can’t find a way to turn off the second GPU, it will consume more power that it should be.
But that’s another problem. Right now, we just want to boot into our Desktop Environment properly.
Running
startx
would show these error messages from/var/log/Xorg.0.log
:(!!) More than one possible primary device found (--) PCI: (0:2:0:0) 10de:06e8:1028:0271 rev 161, Mem @ 0xae000000/16777216, 0xd0000000/268435456, 0xac000000/33554432, I/O @ 0x00004000/128 (--) PCI: (0:3:0:0) 10de:0866:1028:0271 rev 177, Mem @ 0xaa000000/16777216, 0xb0000000/268435456, 0xcc000000/33554432, I/O @ 0x00005000/128, BIOS @ 0x????????/131072
Generate the default configuration for your X (using root):
nvidia-xconfig
Get the list of the GPUs.
$ lspci 02:00.0 VGA compatible controller: nVidia Corporation G98 [GeForce 9200M GS] (rev a1) 03:00.0 VGA compatible controller: nVidia Corporation C79 [GeForce 9400M G] (rev b1)
You will get a long list of devices connected to your PCI buses. We are only interested with the VGA controller.
As you can see, we have two VGA controller, we just need to specify which one we would like to use.
nano /etc/X11/xorg.conf
Go to your Device section and set Bus ID for your controller in it. So, in the end, if I chose the second controller, my
Xorg.conf
would somehow look like this:Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce 9400M G" BusID "PCI:3:0:0" EndSection
The configuration is simple, you just need to add the 6th line. Just make sure you put it in the correct format
PCI:X:X:X
, X possibly refers to the last 3 digit number in your error log.