GNOME desktop is giving black screen when launched on Quadro K5000 card with RHEL 7.5

,

We are trying to launch an xserver display with the below xorg.conf configuration on a headless machine with an NVIDIA Quadro K5000 card and RHEL 7.5 installed on it.

The xserver is launched properly, but the display is coming black when trying to access it and we can’t interact with it. We are using the GNOME desktop manager.

xorg.conf contents:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 470.57.02


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
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         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K5000"
    BusID          "PCI:8:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver          "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K5000"
    BusID          "PCI:130:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "UseDisplayDevice" "NONE"
    Option         "AllowEmptyInitialConfiguration" "True"
    SubSection     "Display"
        Virtual     1920 1200
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "UseDisplayDevice" "NONE"
    Option         "AllowEmptyInitialConfiguration" "True"
    SubSection     "Display"
        Virtual     1920 1200
        Depth       24
    EndSubSection
EndSection

We have also observed the same problem on two more headless machines where the first one has Quadro K4000 with RHEL 7.9 installed on it, and the second machine has Quadro K5000 with RHEL 8 installed on it.

Surprisingly, on all these machines MATE and KDE desktop managers are working properly. The problem is only with GNOME, not sure if GNOME expects anything extra on these cards.

Also, when we ran xradr command on this display, we are not seeing any connected display output and this behavior is common across all the above machines.

xrandr output:

Another interesting thing is, we also have headless machines with Tesla T4 cards and RHEL 7.5 and RHEL 8 installed on them. The GNOME desktop is coming properly, with similar configurations. We are seeing this problem only on the NVIDIA Quadro series cards.

Please help!

Gnome expects a real monitor. Teslas, when used for graphics, create a virtual VGX monitor. To mimic this behaviour on Quadros, iirc the xorg config option
Option "UseDisplayDevice" "none"
can be used.

We have tried the Option "UseDisplayDevice" "none" setting in xorg.conf file, but the result is still the same. I can work with MATE and KDE desktops managers, but GNOME still results in a black screen.

Your configuration has two X screens in the ServerLayout section. GNOME only supports one X screen, so it’s expected to get a black screen on the second X screen on the server.

@aplattner In our case, both X screens are getting a black screen on NVIDIA Quadro series cards. As you mentioned, we tried with just one ServerLayout, but that didn’t help. We don’t even see a single display connected here.

FYI, the same configuration with two ServerLayout sections is working properly for Tesla Cards.

You could still fake a monitor using the ConnectedMonitor and CustumEDID options. Remove “UseDisplayDevice none” in that case.
https://download.nvidia.com/XFree86/Linux-x86_64/460.67/README/xconfigoptions.html

@generix, thank you for the suggestion. We are able to fake a monitor with ConnectedMonitor as you mentioned. But we ran into another issue with this option.

Now the issue is, we are unable to launch Xserver with the seat option. When we checked xserver logs, we saw the NVIDIA(GPU-0): Failed to acquire modesetting permission, error.

xserver log file:

Our goal is to launch multiple xservers with a seat option so that we allow GPU sharing between those sessions.
Can you please help us understand what are we missing here and how to fix it?

Only one X server at a time can control the display hardware. If you want to run X servers that don’t use display at all, set Option "UseDisplayDevice" "none" in the xorg.conf for the headless servers. Note however that this won’t report any outputs at all. If you need the ability to fake outputs, please check out virtual GPUs.