GeForce GTX 980 Fedora Dual Head

Hello,

I’ve spent a lot of time trying to get SLI enabled with two GeForce GTX 980 cards (Gigabyte GV-N980WF3OC-4GD) to render six monitors and just could not do it. One thing I’ve found has led me to question if the kernel has support for it those cards.

Per the documentation at http://us.download.nvidia.com/XFree86/Linux-x86/180.22/README/chapter-25.html

Verify that each GPU is connected to a bus connected to the Root Bridge (note that the GPUs in the above example are on buses 0a and 81):

    % /sbin/lspci -t
good:

    -+-[0000:80]-+-00.0
     |           +-01.0
     |           \-0e.0-[0000:81]----00.0
    ...
     \-[0000:00]-+-00.0
                 +-01.0
                 +-01.1
                 +-0e.0-[0000:0a]----00.0
bad:

    -+-[0000:81]---00.0
    ...
     \-[0000:00]-+-00.0
                 +-01.0
                 +-01.1
                 +-0e.0-[0000:0a]----00.0
Note that in the first example, bus 81 is connected to Root Bridge 80, but that in the second example there is no Root Bridge 80 and bus 81 is incorrectly connected at the base of the device tree. In the bad case, the only solution is to upgrade your kernel to one that properly detects your PCI bus layout.

lspci -t for me shows:

-+-[0000:ff]-+-0b.0
 |           +-0b.1
 |           +-0b.2
 |           +-0c.0
 |           +-0c.1
 |           +-0c.2
 |           +-0c.3
 |           +-0c.4
 |           +-0c.5
 |           +-0f.0
 |           +-0f.1
 |           +-0f.4
 |           +-0f.5
 |           +-0f.6
 |           +-10.0
 |           +-10.1
 |           +-10.5
 |           +-10.6
 |           +-10.7
 |           +-12.0
 |           +-12.1
 |           +-13.0
 |           +-13.1
 |           +-13.2
 |           +-13.3
 |           +-13.4
 |           +-13.5
 |           +-13.6
 |           +-13.7
 |           +-14.0
 |           +-14.1
 |           +-14.2
 |           +-14.3
 |           +-14.6
 |           +-14.7
 |           +-15.0
 |           +-15.1
 |           +-15.2
 |           +-15.3
 |           +-16.0
 |           +-16.6
 |           +-16.7
 |           +-17.0
 |           +-17.4
 |           +-17.5
 |           +-17.6
 |           +-17.7
 |           +-1e.0
 |           +-1e.1
 |           +-1e.2
 |           +-1e.3
 |           +-1e.4
 |           +-1f.0
 |           \-1f.2
 \-[0000:00]-+-00.0
             +-01.0-[01]--
             +-01.1-[02]----00.0
             +-02.0-[03]--+-00.0
             |            \-00.1
             +-03.0-[04]--+-00.0
             |            \-00.1
             +-05.0
             +-05.1
             +-05.2
             +-05.4
             +-11.0
             +-11.4
             +-14.0
             +-16.0
             +-19.0
             +-1a.0
             +-1b.0
             +-1d.0
             +-1f.0
             +-1f.2
             \-1f.3

Which much more resembles the bad. Can anyone provide any insight?

Some additional info:

  • Distro: Fedora 23
  • Motherboard: ASRock X99 Extreme4 ATX LGA2011-3 Motherboard

xorg.conf:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "HP 27sv"
    HorizSync       30.0 - 80.0
    VertRefresh     50.0 - 60.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 980"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-7"
    Option         "MultiGPU" "On"
    Option         "SLI" "Mosaic"
    Option         "MetaModes" "GPU-0.DFP-3: nvidia-auto-select +3840+1080, GPU-0.DFP-5: nvidia-auto-select +0+1080, GPU-0.DFP-7: nvidia-auto-select +1920+1080, GPU-1.DFP-0: nvidia-auto-select +0+0 {rotation=invert}, GPU-1.DFP-1: nvidia-auto-select +1920+0 {rotation=invert}, GPU-1.DFP-4: nvidia-auto-select +3840+0 {rotation=invert}"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Heyyo,

Hmm, I could be wrong but I think SLI Mosaic is only on Quadro cards.

So if you’re trying to just do multi-monitor? Just disable SLI and then try to setup monitors to work.

If you’re trying SLI for games in Linux? There’s no point as only ID Tech 4 Engine supports SLI. The issue is OpenGL hasn’t been friendly with AMD CrossFire and NVIDIA SLI for a long time… heck, look at RAGE and Wolfenstein: New Order even on Windows. OpenGL = SLI off… hopefully Vulkan rectifies this issue with better support for multi-GPU configurations.

From everything I read? The main issue with OpenGL is the framebuffer by default is setup as swapping instead of flipping which alternative-frame rendering requires.

Hey ThE_MarD,

Thank you so much for taking the time to respond!

I’m OK with not having SLI. All I want is to have the six monitors work and be usable. I’ve spent hours modifying configurations via nvidia-xconfig and nvidia-settings but cannot for the life of me get the six monitors to work as expected.

The only configuration I could set which actually turns on all the monitors is:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "HP 27sv"
    HorizSync       30.0 - 80.0
    VertRefresh     50.0 - 60.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "HP 27sv"
    HorizSync       0.0 - 0.0
    VertRefresh     0.0
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 980"
    BusID          "PCI:4:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 980"
    BusID          "PCI:3:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-3"
    Option         "metamodes" "DP-1: nvidia-auto-select +1920+1080, DP-3: nvidia-auto-select +3840+1080, DP-5: nvidia-auto-select +1920+0 {rotation=invert}, DVI-I-1: nvidia-auto-select +0+1080"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "HDMI-0: nvidia-auto-select +1920+0 {rotation=invert}, DVI-D-0: nvidia-auto-select +0+0 {rotation=invert}"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

The problem with this is that Gnome doesn’t know about Screen1 and therefore Screen1 has no window manager. I can start an app there by running the following in a terminal:

$ export DISPLAY=:0.1
$ gvim

This opens gvim in one of the monitors in Screen1 but I can’t type into it as my keyboard seems to be bound into Screen0 – even when my mouse is in that monitor.

If I click “Advanced” in nvidia-settings, I see an option for Basic Mosaic. Using that, I set the monitors the way they should be utilized and get the following xorg.conf:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 358.16  (buildmeister@swio-display-x64-rhel04-12)  Mon Nov 16 19:58:01 PST 2015

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "HP 27sv"
    HorizSync       30.0 - 80.0
    VertRefresh     50.0 - 60.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 980"
    BusID          "PCI:4:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-3"
    Option         "metamodes" "GPU-da2af76f-d02e-19a5-08ac-2abce4c7a64a.DP-1: nvidia-auto-select +1920+1080, GPU-da2af76f-d02e-19a5-08ac-2abce4c7a64a.DP-3: nvidia-auto-select +3840+1080, GPU-da2af76f-d02e-19a5-08ac-2abce4c7a64a.DP-5: nvidia-auto-select +1920+0 {rotation=invert}, GPU-da2af76f-d02e-19a5-08ac-2abce4c7a64a.DVI-I-1: nvidia-auto-select +0+1080, GPU-c0320e5d-6096-6f06-444f-c2f767624620.HDMI-0: nvidia-auto-select +0+0, GPU-c0320e5d-6096-6f06-444f-c2f767624620.DVI-D-0: nvidia-auto-select +3840+0 {rotation=invert}"
    Option         "MultiGPU" "Off"
    Option         "SLI" "off"
    Option         "BaseMosaic" "on"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Sadly, this leaves me with a crashed gnome and only two monitors rendering. I greatly appreciate any information you can provide; thank you!