** Description changed: [ Impact ] Some newer AMD APUs don't claim they are VGA class device, but a PCI display: ``` c4:00.0 Display controller [0380]: Advanced Micro Devices, Inc. [AMD/ATI] Strix [Radeon 880M / 890M] [1002:150e] (rev d1) - Subsystem: Dell Device [1028:0d80] - Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ - Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- - Latency: 0 - Interrupt: pin A routed to IRQ 149 - IOMMU group: 18 - Region 0: Memory at 5800000000 (64-bit, prefetchable) [size=256M] - Region 2: Memory at b0000000 (64-bit, prefetchable) [size=2M] - Region 4: I/O ports at 1000 [size=256] - Region 5: Memory at b0500000 (32-bit, non-prefetchable) [size=512K] - Capabilities: <access denied> - Kernel driver in use: amdgpu - Kernel modules: amdgp + Subsystem: Dell Device [1028:0d80] + Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ + Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- + Latency: 0 + Interrupt: pin A routed to IRQ 149 + IOMMU group: 18 + Region 0: Memory at 5800000000 (64-bit, prefetchable) [size=256M] + Region 2: Memory at b0000000 (64-bit, prefetchable) [size=2M] + Region 4: I/O ports at 1000 [size=256] + Region 5: Memory at b0500000 (32-bit, non-prefetchable) [size=512K] + Capabilities: <access denied> + Kernel driver in use: amdgpu + Kernel modules: amdgp ``` There used to be a polling logic in GDM that expects VGA device to appear. On platforms with those newer APUs, The polling logic simply times out, leading to a 10-second delay before GDM can fully initialize every time the system boots. When this happens, if the debug is enabled in the /etc/gdm3/custom.conf: ``` [debug] # Uncomment the line below to turn on debugging # More verbose logs # Additionally lets the X server dump core if it crashes Enable=true ``` journalctl shows the following log pattern on those platforms: ``` $ journalctl -b 0 -u gdm -o short-monotonic ... [ 5.564409] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: Found secondary PCI graphics adapter, not proceeding yet. [ 5.564465] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: Found secondary PCI graphics adapter, not proceeding yet. [ 5.564466] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: udev has not settled enough for graphics. [ 5.564526] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: udev is still settling, so not creating display yet [ 5.564528] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: Getting session type (prefers wayland, falling back: no) [ 5.564548] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: New displays on seat0 will use wayland [ 5.564549] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: seat0 doesn't yet support graphics. Waiting 10 seconds to try again. [ 5.564574] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: received VT change event [ 5.564601] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: VT is 1 at startup [ 16.011122] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: display for seat seat0 requested [ 16.011205] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: udev timed out, proceeding anyway. [ 16.011226] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: System supports graphics [ 16.011230] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: Getting session type (prefers wayland, falling back: no) [ 16.011250] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: New displays on seat0 will use wayland [ 16.011252] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: wayland login display for seat seat0 requested [ 16.011258] ubuntu gdm3[2583]: Gdm: GdmLocalDisplayFactory: Adding display on seat seat0 ... ``` [ Fix ] ====== GDM ======= Upstream GDM has had this fixed in commit 85982d61, by adding extra logic to check the "boot_display" sysfs attribute. The changed is merged in Gnome 50: - https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/343 Resolute already has it. To fix the timeout issue it needs to be brought back to Questing and Noble. == Linux Kernel == For this change to work, the kernel needs to support boot_display sysfs ABI: - https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class- drm-boot-display This is included in kernel v6.19, in the following patch series: - https://lore.kernel.org/r/[email protected] - Currently no generic kernel has it yet, but for the upcoming 7.0-based - kernel this will be included. For kernels not supporting this sysfs + Currently 6.17-oem kernel already includes it. The upcoming 7.0-based + kernel will also have it. For kernels not supporting this sysfs attribite, it simply falls back to the original behavior. [ Tests ] Boot the system with udpated package installed. On platforms where the GPU is NOT recognized as a VGA class (e.g. Strix, Karaken, Strix Halo) - - Make sure that the above 10-second delay doesn't appear in the journal. + - Make sure that the above 10-second delay doesn't appear in the journal. On other platforms: - - Run basic graphic test like `glxinfo -B`, make sure display and rendering work properly. + - Run basic graphic test like `glxinfo -B`, make sure display and rendering work properly. On all platforms: - - Make sure gdm works properly on kernels without the boot_display sysfs attribute. + - Make sure gdm works properly on kernels without the boot_display sysfs attribute. [ Where problems could occur ] For platforms running with kernels that don't have this boot_display sysfs ABI, even with this patch, this 10 second delay will still exist. The patch must not regress the behavior of GDM on those kernel.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2146768 Title: Avoid 10-second timeout on platforms where GPU is not advertised as VGA class To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/2146768/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
