384.98 - monitors only show black screen after being turned off and on while logged in as non-root user

Hi,

one machine has the behavior that when logged in as non-root user and you turn one monitor off and on again, the monitor shows only a black screen.

The setup is:
FUJITSU Workstation CELSIUS M740 with a Quadro K2200
two DELL S2817Q monitors attached via displayport
RHEL 7.4 with 3.10.0-693.11.6.el7.x86_64

The steps to reproduce are:

  1. boot machine
  2. login as non-root user (both displays show the gnome desktop)
  3. turn off the second display (the first display goes dark for a second and then shows the desktop again)
  4. turn on the second display (the second display only shows a black screen)

actual result:
second display only shows black screen

expected result:
second display shows desktop

how reproducible:
always reproducible

while turning off the second display there are the following messages printed to /var/log/messages and journal:

Jan 10 14:51:54 uim740 kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0
Jan 10 14:51:54 uim740 journal: Can not determine workarea, guessing at layout
Jan 10 14:51:54 uim740 journal: Can not determine workarea, guessing at layout

Jan 10 14:51:54 uim740 kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0
Jan 10 14:51:54 uim740 nautilus-deskto[28956]: Can not determine workarea, guessing at layout
Jan 10 14:51:54 uim740 nautilus-deskto[28956]: Can not determine workarea, guessing at layout

When logged in as root the display can be turned off and on and the display still shows the desktop. And only the “snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0” message is printed to /var/log/messages and journal:

Jan 10 14:57:15 uim740 kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0

Jan 10 14:57:15 uim740 kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0

I attached the Xorg log when logged in as root and when logged in as non-root. And I also attached the nvidia-bug-report.

Br,
Jens
nvidia-bug-report.log.gz (259 KB)
Xorg.0.log_on_off_on__non_root.txt (873 KB)
Xorg.0.log_on_off_on__root.txt (1.04 MB)

I can’t see any noticeable differences in the logs. Maybe the user’s ~/.config/monitors.xml is broken? Just delete and rearrange. Did you try with a new, empty user profile?

Hi generix,

thank you for your response. The ~/.config/monitors.xml was missing. After rearranging the monitors in the gnome display settings for the affected user, the monitors worked again.

Br,
Jens

Sidenote: AFAIK, Gnome in RHEL is specifically patched to not touch a predefined monitor config in xorg.conf. There you had only one monitor defined so the second didn’t get autoadded.

So there’s supposed to be a second Monitors section in xorg.conf when two monitors are configured? I’m asking because I actually configured the second monitor with nvidia-settings and the xorg.conf file still looks the same.

Not necessarily. If now a monitors.xml exists it will override the xorg.conf defined layout. You could have gone without an xorg.conf and both monitors would have been added by Gnome, I think. It’s just some special logic with RHEL/Centos.

You had it right in #4. In #6 it’s the other way around.

In RHEL/Centos/EL7 mutter will not override the display layout if one already exists (ex: you have an xorg.conf with a display layout).

You can see this in the following patch and bugzilla:

https://git.centos.org/blob/rpms!mutter.git/c7/SOURCES!0001-monitor-config-Consider-external-layout-before-defau.patch

https://bugzilla.redhat.com/show_bug.cgi?id=1290448

From my experience X in EL7 doesn’t auto pickup new devices or bring back old ones if they disappear. I’ve only see this when you unplug a display however but might apply when you turn off a display as well. You would need to use xrandr or some xrandr like utility to (re)add the lost display: ‘xrandr … -output DP-4 -pos 0x0 … -output DP-3 -pos 3840x0 …’ I’m sure there’s multiple way to set this in xrandr.

The reason why you don’t need or see an extra Display is that you’re setting a metamode line that handles the display layout: “metamodes” “DP-3: nvidia-auto-select +0+0, DP-2: nvidia-auto-select +3840+0”

Hi dereksybau8,

thank you for pointing me to the BZ. This is exactly the issue we are having.

Br,
Jens