diff options
Diffstat (limited to 'data/61-gdm.rules.in')
-rw-r--r-- | data/61-gdm.rules.in | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in index 0f6e4466..6b36bcbc 100644 --- a/data/61-gdm.rules.in +++ b/data/61-gdm.rules.in @@ -15,6 +15,42 @@ DRIVERS=="simple-framebuffer", GOTO="gdm_nomodeset_end" IMPORT{cmdline}="nomodeset", GOTO="gdm_disable_wayland" LABEL="gdm_nomodeset_end" +# The vendor nvidia driver has multiple modules that need to be loaded before GDM can make an +# informed choice on which way to proceed, so force GDM to wait until NVidia's modules are +# loaded before starting up. +KERNEL!="nvidia", GOTO="gdm_nvidia_end" +SUBSYSTEM!="module", GOTO="gdm_nvidia_end" +ACTION!="add", GOTO="gdm_nvidia_end" +RUN+="/usr/bin/touch /run/udev/gdm-machine-has-vendor-nvidia-driver" +LABEL="gdm_nvidia_end" + +# If this machine has an internal panel, take note, since it's probably a laptop +# FIXME: It could be "ghost connectors" make this pop positive for some workstations +# in the wild. If so, we may have to fallback to looking at the chassis type from +# dmi data or acpi +KERNEL!="card[0-9]-eDP-*", GOTO="gdm_laptop_check_end" +SUBSYSTEM!="drm", GOTO="gdm_laptop_check_end" +ACTION!="add", GOTO="gdm_laptop_check_end" +RUN+="/usr/bin/touch /run/udev/gdm-machine-is-laptop" +GOTO="gdm_hybrid_nvidia_laptop_check" +LABEL="gdm_laptop_check_end" + +# If this is a hybrid graphics setup, take note +KERNEL!="card[1-9]*", GOTO="gdm_hybrid_graphics_check_end" +KERNEL=="card[1-9]-*", GOTO="gdm_hybrid_graphics_check_end" +SUBSYSTEM!="drm", GOTO="gdm_hybrid_graphics_check_end" +ACTION!="add", GOTO="gdm_hybrid_graphics_check_end" +RUN+="/usr/bin/touch /run/udev/gdm-machine-has-hybrid-graphics" +LABEL="gdm_hybrid_graphics_check_end" + +# If this is a hybrid graphics laptop with vendor nvidia driver, disable wayland +LABEL="gdm_hybrid_nvidia_laptop_check" +TEST!="/run/udev/gdm-machine-is-laptop", GOTO="gdm_hybrid_nvidia_laptop_check_end" +TEST!="/run/udev/gdm-machine-has-hybrid-graphics", GOTO="gdm_hybrid_nvidia_laptop_check_end" +TEST!="/run/udev/gdm-machine-has-vendor-nvidia-driver", GOTO="gdm_hybrid_nvidia_laptop_check_end" +GOTO="gdm_disable_wayland" +LABEL="gdm_hybrid_nvidia_laptop_check_end" + # Disable wayland when nvidia modeset is disabled or when drivers are a lower # version than 470, # For versions above 470 but lower than 510 prefer Xorg, @@ -43,3 +79,4 @@ RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false" GOTO="gdm_end" LABEL="gdm_end" + |