Blank screen after login (NVIDIA "Failed to acquire modesetting permission")

A while back (several weeks? I believe it was long before the nvidia-340xx fiasco) I was unable to log in. Sorry, it’s been long enough I don’t remember exactly what led up to it, but I think it was probably an NVIDIA driver uprade. I switched to the nouveau drivers, and everything worked fine (but with terrible performance). I’m finally getting around to looking at it, and I definitely still have the same problem after a recent full system upgrade.

When I boot, I get the login screen (GDM), but when I log in I get a blank screen. I get this in Xorg.1.log:

[    49.857] _XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
[    49.857] _XSERVTransMakeAllCOTSServerListeners: server already running
[    49.857] (--) Log file renamed from "/var/log/Xorg.pid-2116.log" to "/var/log/Xorg.1.log"
[    49.857] (WW) Failed to open protocol names file lib/xorg/protocol.txt
[    49.857] 
X.Org X Server 1.20.10
X Protocol Version 11, Revision 0
[    49.857] Build Operating System: Linux Manjaro Linux
[    49.857] Current Operating System: Linux compy 5.10.2-2-MANJARO #1 SMP PREEMPT Tue Dec 22 08:14:42 UTC 2020 x86_64
[    49.857] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.10-x86_64 root=UUID=52038266-4e2d-4a59-8d60-93f9ca39118b rw quiet splash resume=UUID=449e6e26-ec82-4bfe-b637-0a472d726d0b
[    49.857] Build Date: 16 December 2020  10:33:32PM
[    49.857]  
[    49.857] Current version of pixman: 0.40.0
[    49.857] 	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
[    49.857] Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    49.857] (==) Log file: "/var/log/Xorg.1.log", Time: Sat Jan  9 12:06:34 2021
[    49.858] (==) Using config directory: "/etc/X11/xorg.conf.d"
[    49.858] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    49.858] (==) ServerLayout "layout"
[    49.858] (**) |-->Screen "Screen0" (0)
[    49.858] (**) |   |-->Monitor "Monitor0"
[    49.858] (**) |   |-->Device "Device0"
[    49.858] (==) Automatically adding devices
[    49.858] (==) Automatically enabling devices
[    49.858] (==) Automatically adding GPU devices
[    49.858] (==) Automatically binding GPU devices
[    49.858] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    49.858] (WW) The directory "/usr/share/fonts/100dpi" does not exist.
[    49.858] 	Entry deleted from font path.
[    49.858] (WW) The directory "/usr/share/fonts/75dpi" does not exist.
[    49.858] 	Entry deleted from font path.
[    49.858] (==) FontPath set to:
	/usr/share/fonts/misc,
	/usr/share/fonts/TTF,
	/usr/share/fonts/OTF,
	/usr/share/fonts/Type1
[    49.858] (==) ModulePath set to "/usr/lib/xorg/modules"
[    49.858] (II) The server relies on udev to provide the list of input devices.
	If no devices become available, reconfigure udev or disable AutoAddDevices.
[    49.858] (II) Module ABI versions:
[    49.858] 	X.Org ANSI C Emulation: 0.4
[    49.858] 	X.Org Video Driver: 24.1
[    49.858] 	X.Org XInput driver : 24.1
[    49.858] 	X.Org Server Extension : 10.0
[    49.858] (++) using VT number 2

[    49.860] (II) systemd-logind: took control of session /org/freedesktop/login1/session/_35
[    49.860] (II) xfree86: Adding drm device (/dev/dri/card0)
[    49.860] (II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 12 paused 0
[    49.861] (**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
[    49.861] (**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
[    49.862] (--) PCI:*(1@0:0:0) 10de:1401:3842:2966 rev 161, Mem @ 0xee000000/16777216, 0xd0000000/268435456, 0xe0000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/131072
[    49.862] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
[    49.862] (II) LoadModule: "glx"
[    49.862] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    49.863] (II) Module glx: vendor="X.Org Foundation"
[    49.863] 	compiled for 1.20.10, module version = 1.0.0
[    49.863] 	ABI class: X.Org Server Extension, version 10.0
[    49.863] (II) LoadModule: "nvidia"
[    49.863] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[    49.863] (II) Module nvidia: vendor="NVIDIA Corporation"
[    49.863] 	compiled for 1.6.99.901, module version = 1.0.0
[    49.863] 	Module class: X.Org Video Driver
[    49.863] (II) NVIDIA dlloader X Driver  455.45.01  Thu Nov  5 23:01:05 UTC 2020
[    49.863] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[    49.864] (II) systemd-logind: releasing fd for 226:0
[    49.864] (II) Loading sub module "fb"
[    49.864] (II) LoadModule: "fb"
[    49.864] (II) Loading /usr/lib/xorg/modules/libfb.so
[    49.864] (II) Module fb: vendor="X.Org Foundation"
[    49.864] 	compiled for 1.20.10, module version = 1.0.0
[    49.864] 	ABI class: X.Org ANSI C Emulation, version 0.4
[    49.864] (II) Loading sub module "wfb"
[    49.864] (II) LoadModule: "wfb"
[    49.864] (II) Loading /usr/lib/xorg/modules/libwfb.so
[    49.865] (II) Module wfb: vendor="X.Org Foundation"
[    49.865] 	compiled for 1.20.10, module version = 1.0.0
[    49.865] 	ABI class: X.Org ANSI C Emulation, version 0.4
[    49.865] (II) Loading sub module "ramdac"
[    49.865] (II) LoadModule: "ramdac"
[    49.865] (II) Module "ramdac" already built-in
[    49.865] (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
[    49.865] (==) NVIDIA(0): RGB weight 888
[    49.865] (==) NVIDIA(0): Default visual is TrueColor
[    49.865] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[    49.865] (**) Option "AllowNVIDIAGpuScreens"
[    49.865] (II) Applying OutputClass "nvidia" options to /dev/dri/card0
[    49.865] (II) Applying OutputClass "nvidia" options to /dev/dri/card0
[    49.865] (**) NVIDIA(0): Option "AllowEmptyInitialConfiguration"
[    49.865] (**) NVIDIA(0): Enabling 2D acceleration
[    49.865] (II) Loading sub module "glxserver_nvidia"
[    49.865] (II) LoadModule: "glxserver_nvidia"
[    49.865] (II) Loading /usr/lib/nvidia/xorg/libglxserver_nvidia.so
[    49.870] (II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
[    49.870] 	compiled for 1.6.99.901, module version = 1.0.0
[    49.870] 	Module class: X.Org Server Extension
[    49.870] (II) NVIDIA GLX Module  455.45.01  Thu Nov  5 22:58:18 UTC 2020
[    49.870] (II) NVIDIA: The X server supports PRIME Render Offload.
[    49.871] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:1:0:0
[    49.871] (--) NVIDIA(0):     CRT-0
[    49.871] (--) NVIDIA(0):     DFP-0 (boot)
[    49.871] (--) NVIDIA(0):     DFP-1
[    49.871] (--) NVIDIA(0):     DFP-2
[    49.871] (--) NVIDIA(0):     DFP-3
[    49.871] (--) NVIDIA(0):     DFP-4
[    49.871] (--) NVIDIA(0):     DFP-5
[    49.871] (--) NVIDIA(0):     DFP-6
[    49.871] (--) NVIDIA(0):     DFP-7
[    49.872] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 960 (GM206-A) at PCI:1:0:0 (GPU-0)
[    49.872] (--) NVIDIA(0): Memory: 2097152 kBytes
[    49.872] (--) NVIDIA(0): VideoBIOS: 84.06.2a.00.61
[    49.872] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[    49.872] (EE) NVIDIA(GPU-0): Failed to acquire modesetting permission.
[    49.872] (EE) NVIDIA(0): Failing initialization of X screen
[    49.872] (II) UnloadModule: "nvidia"
[    49.872] (II) UnloadSubModule: "glxserver_nvidia"
[    49.872] (II) Unloading glxserver_nvidia
[    49.872] (II) UnloadSubModule: "wfb"
[    49.872] (II) UnloadSubModule: "fb"
[    49.872] (EE) Screen(s) found, but none have a usable configuration.
[    49.872] (EE) 
Fatal server error:
[    49.872] (EE) no screens found(EE) 
[    49.872] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[    49.872] (EE) Please also check the log file at "/var/log/Xorg.1.log" for additional information.
[    49.872] (EE) 
[    49.873] (EE) Server terminated with error (1). Closing log file.

I think the key problem is “Failed to acquire modesetting permission.” but I don’t know for sure.

In /etc/X11 I have xorg.conf.d/90-mhwd.conf as a symlink to mhwd.d/nvidia.conf and the contents are:

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

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

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    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 "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "NoLogo" "1"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option         "COMPOSITE" "Enable"
EndSection

 
Section "InputClass"
    Identifier          "Keyboard Defaults"
    MatchIsKeyboard        "yes"
    Option              "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

I’ve re-run nvidia-xconfig. It produced a file without the last two sections (Extensions and InputClass) but removing those made no difference.

I tried adding nomodeset and nvidia-drm.modeset=1 to my kernel params and it made no difference.

mhwd -li -d says

|NAME:|video-nvidia|
|---|---|
|   ATTACHED:|PCI|
|   VERSION:|2020.11.30|
|   INFO:|Closed source NVIDIA drivers for linux.|
|   PRIORITY:|4|
|   FREEDRIVER:|false|
|   DEPENDS:|-|
|   CONFLICTS:|video*nvidia* |
|   CLASSIDS:|0300 0302 |
|   VENDORIDS:|10de|

pacman -Ss nvidia | grep installed says

core/mhwd-nvidia 455.45.01-3 [installed]
core/mhwd-nvidia-390xx 390.138-1 [installed]
extra/libvdpau 1.4-1 [installed]
extra/linux510-nvidia 455.45.01-10.0 (linux510-extramodules) [installed]
extra/linux54-nvidia 455.45.01-6 (linux54-extramodules) [installed]
extra/linux59-nvidia 455.45.01-6 (linux59-extramodules) [installed]
extra/nvidia-utils 455.45.01-2 [installed]
multilib/lib32-nvidia-utils 455.45.01-3 [installed]

I’m not sure why it thinks 390xx is installed. I tried pacman -Rsu mhwd-nvidia-390xx and it said:

    warning: removing mhwd-nvidia-390xx from target list
     there is nothing to do

I’m not sure what else to try. Any ideas?

see for this file or create with
usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

Are you asking me to look for that file and add it if it’s missing?

Contents of /usr/share/X11/xorg.conf.d/ are:

10-amdgpu-nvidia-drm-outputclass.conf
10-evdev.conf
10-intel-nvidia-drm-outputclass.conf
10-quirks.conf
40-libinput.conf
70-synaptics.conf
70-wacom.conf

and contents of 10-intel-nvidia-drm-outputclass.conf is:

Section "ServerLayout"
    Identifier "layout"
    Option "AllowNVIDIAGPUScreens"
EndSection

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

Adding 10-nvidia-drm-outputclass.conf with the content you provided doesn’t seem to make any difference.

add this
in /etc/X11/mhwd.d/ nvidia.conf

Thanks for taking all this time to help me out. Unfortunatly, I was still not able to get past the login screen after adding that block to my nvidia.conf file. Same output in the logs.