Investigated this on the affected machine directly (CID 202603-38529). This is
not a kernel bug. Root cause is a systemd ordering cycle in userspace, and the
kernel task should be marked Invalid.
== Root cause ==
power-profiles-daemon 0.21-1ubuntu2 added
"After=multi-user.target display-manager.target" (LP: #2160748). Together with
oem-fix-misc-cnl-oobe-powerprofile-setup 0.3 that closes a job loop:
gdm.service
After= oem-powerprofile-performance-pre-setup.service
(which is WantedBy=display-manager.service)
oem-powerprofile-performance-pre-setup.service
After= power-profiles-daemon.service
power-profiles-daemon.service
After= multi-user.target, display-manager.target <-- new in 0.21-1ubuntu2
display-manager.target
reached via gdm.service <-- back to the start
systemd's cycle-breaking heuristic does not always resolve this. When it does
not, the job queue parks forever, plymouth keeps the KMS device, gdm never
starts, and you get the Dell splash + spinner while SSH stays up because
multi-user services are already running. Removing "quiet splash" takes plymouth
out of the picture so the stall is never visible - which is exactly the
workaround reported here.
== Evidence, captured mid-hang on 6.17.0-1032-oem ==
$ systemctl is-system-running
starting
$ systemctl list-jobs
165 plymouth-quit-wait.service start running
1 graphical.target start waiting
217 oem-powerprofile-performance-pre-setup.service start waiting
206 power-profiles-daemon.service start waiting
215 gdm.service start waiting
2 multi-user.target start waiting
$ sudo fuser -v /dev/dri/card1
root 340 F...m plymouthd
gdm is "waiting", never "activating" - a job-queue deadlock, not a hung device.
systemd names the cycle itself on other boots of this machine:
power-profiles-daemon.service: Found ordering cycle on multi-user.target/stop
power-profiles-daemon.service: Found dependency on
power-profiles-daemon.service/stop
power-profiles-daemon.service: Job multi-user.target/stop deleted to break
ordering cycle starting with
power-profiles-daemon.service/stop
== The failure is NOT kernel-correlated ==
Per-boot survey of the journal on this machine (did the boot reach
graphical.target?):
boot 0 6.17.0-1032-oem NO (hung)
boot -1 6.17.0-1017-oem NO (hung)
boot -2 6.17.0-1017-oem yes
boot -3 6.17.0-1017-oem yes
boot -4 6.17.0-1017-oem NO (hung)
boot -5 6.17.0-1017-oem yes
6.17.0-1017-oem - the "good" GM kernel - hangs too, 2 out of 5 boots. The
reported "3/3 on 1033, fine on 1017" is the nondeterminism of systemd's
cycle-breaking, not a kernel regression. Note also that
linux-image-6.17.0-1032-oem was only installed on 2026-08-29 06:35, while the
1017 hang above was recorded on 2026-08-28 11:30 - the failure predates the new
kernel on this box.
== Proof by fix ==
Masked only the OEM unit, changed nothing else, and rebooted into the same
6.17.0-1032-oem kernel with "quiet splash vt.handoff=7":
$ sudo systemctl mask oem-powerprofile-performance-pre-setup.service
$ # reboot
$ uname -r
6.17.0-1032-oem
$ systemctl is-system-running
running
$ systemctl list-jobs
No jobs running.
$ systemctl is-active gdm
active
The kernel that hung boots to desktop once the loop is broken. The machine has
since been restored (unit unmasked, default boot entry back to 1017).
== Ruled out ==
The obvious kernel suspect in the 1017..1033 delta was ab21cab8c7201
("x86/video: Only fall back to vga_default_device() without screen info").
It is innocent - on 1032 the primary display is detected correctly:
$ ls /sys/class/drm/card*/boot_display
/sys/class/drm/card1/boot_display
$ cat /sys/bus/pci/devices/0000:03:00.0/boot_vga
1
kernel: fbcon: amdgpudrmfb (fb0) is primary device
and amdgpu never resizes BAR0 here (firmware BAR0 0x8100000000-0x810fffffff is
unchanged in /proc/iomem), so the screen_info/BAR match cannot fail. BIOS 1.4.2
is not implicated either; the fault is entirely in userspace unit ordering.
== Suggested fix ==
In power-profiles-daemon, drop "display-manager.target" from After=. Ordering
after multi-user.target alone should satisfy LP: #2160748, and it is the
display-manager.target edge that closes the loop through gdm.
Alternatively, in oem-fix-misc-cnl-oobe-powerprofile-setup, drop
"After=power-profiles-daemon.service" - the daemon is Type=dbus, so the helper
script can simply make its D-Bus call and let ppd be activated on demand,
without a static ordering edge.
Workaround for any affected unit, kernel-independent:
sudo systemctl mask oem-powerprofile-performance-pre-setup.service
Note this affects every image carrying power-profiles-daemon 0.21-1ubuntu2
together with oem-fix-misc-cnl-oobe-powerprofile-setup, on any kernel, so
similar "stuck on splash but SSH works" reports may be filed against the
kernel when they are not kernel issues.
** Changed in: linux-oem-6.17 (Ubuntu)
Status: New => Invalid
** Changed in: power-profiles-daemon (Ubuntu)
Status: New => Confirmed
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2165101
Title:
Dell Pro 15 Fails to boot into OS on 6.17.0-1033-oem kernel
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-oem-6.17/+bug/2165101/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs