From 85982d61790dbbf940c12ad6e747bb1ada0b1355 Mon Sep 17 00:00:00 2001 From: ceroma <165659-ceroma@users.noreply.gitlab.gnome.org> Date: Thu, 18 Dec 2025 06:00:26 +0000 Subject: [PATCH] local-display-factory: look for 'boot_display' sysfs attr --- daemon/gdm-local-display-factory.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c index e284f7992..f1ccf643a 100644 --- a/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c @@ -424,6 +424,7 @@ udev_is_settled (GdmLocalDisplayFactory *factory) const gchar *id_path = g_udev_device_get_property (device, "ID_PATH"); g_autoptr (GUdevDevice) platform_device = NULL; g_autoptr (GUdevDevice) pci_device = NULL; + g_autoptr (GUdevDevice) drm_device = NULL; if (g_strrstr (id_path, "platform-simple-framebuffer") != NULL) { node = next_node; @@ -451,10 +452,28 @@ udev_is_settled (GdmLocalDisplayFactory *factory) factory->seat0_has_boot_up_graphics = TRUE; is_settled = TRUE; break; - } else { - g_debug ("GdmLocalDisplayFactory: Found secondary PCI graphics adapter, not proceeding yet."); } } + + drm_device = g_udev_device_get_parent_with_subsystem (device, "drm", NULL); + + if (drm_device != NULL) { + gboolean boot_display; + + boot_display = g_udev_device_get_sysfs_attr_as_int (drm_device, "boot_display"); + + if (boot_display == 1) { + g_debug ("GdmLocalDisplayFactory: Found primary PCI graphics adapter, proceeding."); + factory->seat0_has_boot_up_graphics = TRUE; + is_settled = TRUE; + break; + } + } + + if (pci_device != NULL || drm_device != NULL) { + g_debug ("GdmLocalDisplayFactory: Found secondary PCI graphics adapter, not proceeding yet."); + } + node = next_node; } -- GitLab