%PDF- %PDF-
Direktori : /lib/udev/rules.d/ |
Current File : //lib/udev/rules.d/61-gdm.rules |
SUBSYSTEM!="pci", GOTO="gdm_pci_device_end" ACTION!="bind", ACTION!="add", GOTO="gdm_pci_device_end" # cirrus ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="/usr/bin/touch /run/udev/gdm-machine-has-virtual-gpu", ENV{GDM_MACHINE_HAS_VIRTUAL_GPU}="1", GOTO="gdm_pci_device_end" # virtio ATTR{vendor}=="0x1af4", ATTR{device}=="0x1050", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="/usr/bin/touch /run/udev/gdm-machine-has-virtual-gpu", ENV{GDM_MACHINE_HAS_VIRTUAL_GPU}="1", GOTO="gdm_pci_device_end" # qxl ATTR{vendor}=="0x1b36", ATTR{device}=="0x0100", RUN+="/usr/bin/touch /run/udev/gdm-machine-has-virtual-gpu", ENV{GDM_MACHINE_HAS_VIRTUAL_GPU}="1", GOTO="gdm_pci_device_end" # vga ATTR{vendor}=="0x1234", ATTR{device}=="0x1111", RUN+="/usr/bin/touch /run/udev/gdm-machine-has-virtual-gpu", ENV{GDM_MACHINE_HAS_VIRTUAL_GPU}="1", GOTO="gdm_pci_device_end" # disable Wayland on Hi1710 chipsets ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", GOTO="gdm_disable_wayland" LABEL="gdm_pci_device_end" # disable Wayland if modesetting is disabled KERNEL!="card[0-9]*", GOTO="gdm_nomodeset_end" KERNEL=="card[0-9]-*", GOTO="gdm_nomodeset_end" SUBSYSTEM!="drm", GOTO="gdm_nomodeset_end" # but keep it enabled for simple framebuffer drivers DRIVERS=="simple-framebuffer", GOTO="gdm_nomodeset_end" IMPORT{parent}="GDM_MACHINE_HAS_VIRTUAL_GPU" ENV{GDM_MACHINE_HAS_VIRTUAL_GPU}!="1", RUN+="/usr/bin/touch /run/udev/gdm-machine-has-hardware-gpu" 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" IMPORT{program}="/bin/sh -c \"echo GDM_NUMBER_OF_GRAPHICS_CARDS=`ls -1d /sys/class/drm/card[0-9] | wc -l`\"" ENV{GDM_NUMBER_OF_GRAPHICS_CARDS}=="1", RUN+="/usr/bin/rm -f /run/udev/gdm-machine-has-hybrid-graphics" ENV{GDM_NUMBER_OF_GRAPHICS_CARDS}!="1", 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, prefer 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_end" LABEL="gdm_hybrid_nvidia_laptop_check_end" # Disable wayland in situation where we're in a guest with a virtual gpu and host passthrough gpu LABEL="gdm_virt_passthrough_check" TEST!="/run/udev/gdm-machine-has-hybrid-graphics", GOTO="gdm_virt_passthrough_check_end" TEST!="/run/udev/gdm-machine-has-virtual-gpu", GOTO="gdm_virt_passthrough_check_end" TEST!="/run/udev/gdm-machine-has-hardware-gpu", GOTO="gdm_virt_passthrough_check_end" GOTO="gdm_disable_wayland" LABEL="gdm_virt_passthrough_check_end" # Disable wayland when there are multiple virtual gpus LABEL="gdm_virt_multi_gpu_check" TEST!="/run/udev/gdm-machine-has-hybrid-graphics", GOTO="gdm_virt_multi_gpu_check_end" TEST!="/run/udev/gdm-machine-has-virtual-gpu", GOTO="gdm_virt_multi_gpu_check_end" TEST=="/run/udev/gdm-machine-has-hardware-gpu", GOTO="gdm_virt_multi_gpu_check_end" LABEL="gdm_virt_multi_gpu_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, # Above 510, prefer Wayland. KERNEL!="nvidia_drm", GOTO="gdm_nvidia_drm_end" SUBSYSTEM!="module", GOTO="gdm_nvidia_drm_end" ACTION!="add", GOTO="gdm_nvidia_drm_end" # disable wayland if nvidia-drm modeset is not enabled ATTR{parameters/modeset}!="Y", GOTO="gdm_disable_wayland" # disable wayland for nvidia drivers versions lower than 470 ATTR{version}=="4[0-6][0-9].*|[0-3][0-9][0-9].*|[0-9][0-9].*|[0-9].*", GOTO="gdm_disable_wayland" # For nvidia drivers versions Above 510, prefer Xorg by default ATTR{version}=="[5-9][1-9][0-9].*", GOTO="gdm_prefer_xorg" # For nvidia drivers versions 470-495, prefer Xorg by default GOTO="gdm_prefer_xorg" LABEL="gdm_nvidia_drm_end" GOTO="gdm_end" LABEL="gdm_prefer_xorg" RUN+="/usr/libexec/gdm-runtime-config set daemon PreferredDisplayServer xorg" GOTO="gdm_end" LABEL="gdm_disable_wayland" RUN+="/usr/libexec/gdm-runtime-config set daemon WaylandEnable false" GOTO="gdm_end" LABEL="gdm_end"