** 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

Reply via email to