xe: GT0 GuC scheduler wedge on Meteor Lake (7d55) — "Schedule disable failed to respond", recovers or hard-l ocks nondeterministically
Orestis Palampougioukis <[email protected]> Tue, 28 Jul 2026 12:26:27 +0300
| Newsgroups | org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <CAE6rXOutQNoLB59ethSrkpg=6Npo274YfPhvnhhibevr29rWrg@mail.gmail.com> |
Subject: drm/xe: MTL GT0 "Schedule disable failed to respond" wedge,
sometimes fatal
Hi,
Reporting an xe GT0 wedge on Meteor Lake that we have been tracking on
one machine for about four weeks. Happy to move this to the GitLab
tracker if you prefer; sending here first since it needs no account.
A device coredump is available (349K gzipped) plus ten more from earlier
instances. I have not attached it to a list post - say the word and I
will send it directly or attach it to a tracker issue.
SUMMARY
-------
The xe GT0 render queue wedges with
GT0: Schedule disable failed to respond, guc_id=N
followed by a GT reset that reports "reset done" but does not restore a
working GPU. Measured rate: one wedge per ~29 hours, 16 wedges across
31 boots and 466 hours of uptime.
The part that seems worth reporting beyond "MTL GuC hangs": the same
signature has two very different outcomes and we cannot predict which.
Sometimes rendering dies but the kernel keeps running normally for
hours; sometimes the machine hard-locks within seconds. Same kernel,
same firmware, same guilty process, same guc_id.
HARDWARE / SOFTWARE
-------------------
Machine Lenovo ThinkPad P16s Gen 3 (21KS000MGM)
BIOS R2DET38W 1.23
CPU Intel Core Ultra 7 165H (Meteor Lake)
iGPU 8086:7d55 rev 08, subsystem 17aa:50ea
GT0 main IP 12.71.4, GT1 media IP 13.0.8
Driver xe, via i915.force_probe=!7d55 xe.force_probe=7d55
Kernel 6.17.0-35-generic, Ubuntu 24.04.4 LTS
also reproduces on 7.0.0-14-generic, at a higher rate
GuC 70.53.0 - note the driver asks for 70.44.1, see below
Mesa 25.2.8, libdrm 2.4.125
Session native Wayland (GNOME/mutter), 3 displays all on card0
Note fully muxless box; the discrete NVIDIA GPU has no display
connectors and its driver is blacklisted
KERNEL LOG SIGNATURE
--------------------
The entire event, inside 11 ms:
xe 0000:00:02.0: [drm] GT0: Schedule disable failed to respond, guc_id=22
xe 0000:00:02.0: [drm] Xe device coredump has been created
xe 0000:00:02.0: [drm] GT0: trying reset from guc_exec_queue_timedout_job
[xe]
xe 0000:00:02.0: [drm] GT0: reset queued
xe 0000:00:02.0: [drm] GT0: reset started
xe 0000:00:02.0: [drm] GT0: reset done
xe 0000:00:02.0: [drm] GT0: Timedout job: seqno=3090483,
lrc_seqno=3090483, guc_id=22, flags=0x0 in systemd-logind [1507]
Coredump header:
Reason: Schedule disable failed to respond, guc_id=22, ret=0, guc_read=0
kernel: 6.17.0-35-generic module: xe
Process: systemd-logind [1507]
PCI ID: 0x7d55 PCI revision: 0x08
GuC firmware: i915/mtl_guc_70.bin
GuC version: 70.53.0 (wanted 70.44.1)
Note ret=0, guc_read=0 - the GuC is not returning an error, it is not
answering at all.
There is a second, rarer shape on the same box which storms instead of
firing once (e.g. 30 of each plus 21 reset cycles in one burst):
GT0: VM job timed out on non-killed execqueue
GT0: Timedout job: seqno=N, lrc_seqno=N, guc_id=N, flags=0x4 in
no process [-1]
flags=0x4 and "in no process [-1]", versus flags=0x0 and a named
process in the common shape. Unclear to us whether these are one bug
or two.
THE NONDETERMINISTIC OUTCOME - the main thing we are reporting
-------------------------------------------------------------
Measured as (last journal entry) minus (the GT wedge line), every wedge
since 07-18:
date xe-hang lines survived after wedge
------------ ------------- --------------------
07-18 20:22 179 (storm) 0.2 min
07-19 01:30 3 2.5 min
07-19 21:10 3 304.9 min
07-20 07:23 3 124.3 min
07-25 01:48 5 10.7 min
07-25 15:39 3 70.0 min
07-26 21:23 2449 (storm) 0.0 min
07-28 11:27 3 0.2 min
In the long-survival cases the box is fully usable except that nothing
renders: the journal keeps flowing, timers and cron keep firing, the
devcoredump even ages out on its normal ~1h TTL. In the short cases
everything stops. On 07-28 the last log line is 15 s after the wedge,
and a 30-second systemd timer that fired at 11:27:31 never fired again.
Three orders of magnitude of variation on an identical fingerprint. We
could not find a covariate. Ruled out on our corpus:
- not the hang-line count: a 3-line wedge produced both 0.2 min and
304.9 min
- not thermal: the fatal boot peaked at 310k package-throttle events,
while boots that survived 14.8h and 53.1h peaked at 1.25M and 959k
- not memory: 62 GB RAM, ~46 GB available, zero swap used, no OOM
anywhere
- not CPU: no MCE / machine-check / panic in any boot, pstore empty
every time
- not the client: see below
THE GUILTY CONTEXT IS systemd-logind IN 8 OF 8 WEDGES
-----------------------------------------------------
systemd-logind is named in the "Timedout job" line of every wedge we
have full logs for. Chrome appeared in early instances and was the
obvious suspect, but we have run Chrome fully GPU-starved
(--disable-gpu --disable-gpu-compositing, VA-API decode off) since
2026-07-09 and the wedges continued at the same rate with Chrome absent
from the guilty list entirely. Xwayland appears in some storms as an
additional owner.
We read logind as an always-present session client rather than a
culprit, but it is the one constant, and it is a light client - which is
why "heavy GPU load causes this" never fit our data.
FIRMWARE VERSION - possible relevance
-------------------------------------
The coredump reports:
GuC version: 70.53.0 (wanted 70.44.1)
We are running a GuC nine minor versions ahead of what this driver
requests. That was not deliberate - we were fixing a too-old-GuC
warning and took the newest blob on the linux-firmware branch. We are
about to soak the matched 70.44.1 build. If a driver/GuC mismatch in
this direction is known to affect the scheduler path, that would be
useful to know before we spend days on the soak.
WHY xe AND NOT i915
-------------------
MAINTAINERS scopes the i915 entry to "Meteor Lake, DG2 and older" and
the xe entry to "Lunar Lake and newer", so at first glance an MTL report
belongs to i915. We think the code boundary is the right one here: this
machine runs xe on MTL (the distro default cmdline is
i915.force_probe=!7d55 xe.force_probe=7d55), the wedge is in
drivers/gpu/drm/xe/xe_guc_submit.c, and that path is covered by the xe
entry's F: glob with no platform qualifier. If MTL-on-xe is out of
scope, please say so and we will refile - but the config is what Ubuntu
24.04 ships by default, so it is not exotic.
PRIOR ART WE CHECKED - why we do not think this is a duplicate
-------------------------------------------------------------
drm/i915#14469 tracks Meteor Lake GuC hangs attributed to the GuC
failing to respond when the GPU wakes from RC6, with the signature
"GT0: GUC: TLB invalidation response timed out" plus "GPU HANG: ecode".
Plausibly the same underlying behaviour, but:
- it is filed against i915; we are on xe, and xe has no
enable_rc6-style parameter (37 module parameters, none for RC6 or
GT idle), so its documented workarounds do not apply
- we have zero instances of that signature. Grepping every boot back
to 07-01 for "TLB invalidation response/fence timed out" returns 0
hits. Ours is exclusively "Schedule disable failed to respond" on
the exec-queue scheduler path
- the BIOS workaround suggested there ("disable IGFX RenderStandby")
is a Dasharo/coreboot option. This Lenovo firmware exposes 104
attributes via thinklmi and none is RenderStandby or any IGFX/RC6
toggle
For what it is worth, RC6 is active here - the following reports
name=gt0-rc and idle_status=gt-c6:
/sys/class/drm/card0/device/tile0/gt0/gtidle/
So if #14469's RC6 mechanism generalises to xe, this box is exposed to
it; we just cannot confirm it from our logs and cannot test the
workaround.
WHAT WE HAVE TRIED (all negative, listed so you can skip them)
-------------------------------------------------------------
GuC 70.36.0 -> 70.53.0 wedges continued
kernel 6.17.0-35 -> 7.0.0-14 worse: 2 wedges in 13 min; reverted
fall back to i915 no driver binds at all on 6.17; falls
through to simpledrm, no acceleration
and no external displays
Chrome fully GPU-starved wedges continued at the same rate;
Chrome left the guilty-context list
entirely
Chrome render onto the dGPU GT still wedged, guilty context still
(PRIME offload, x11 ozone) logind; abandoned for unrelated reasons
WHAT WE CAN PROVIDE
-------------------
- the 07-28 devcoredump, plus ten more from 07-20 to 07-26 (a udev
rule snapshots them before the ~1h TTL expires)
- full journalctl -k for any of the 31 boots
- we can run instrumented builds or debug parameters on request. This
box reproduces roughly once a day under normal desktop use.
Thanks,
Orestis Palampougioukis