Public bug reported:
[ 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
```
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
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.
On other platforms:
- 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.
[ 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.
** Affects: gdm3 (Ubuntu)
Importance: Undecided
Status: New
** Tags: originate-from-2146375
** Tags added: originate-from-2146375
--
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