You are not logged in.
Hello,
I am experiencing random system freezes on my laptop with Intel Meteor Lake iGPU.
Architecture: x86_64
Model name: Intel(R) Core(TM) Ultra 7 255H
~ ❯ lspci -nnk | grep -A3 VGA
0000:00:02.0 VGA compatible controller [0300]: Intel Corporation Arrow Lake-P [Intel Graphics](rev 03)
DeviceName: Onboard - Video
Subsystem: ASUSTeK Computer Inc. Device
Kernel driver in use: i915
~ ❯ uname -a
Linux comp 6.12.47-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 12 Sep 2025 08:06:51 +0000 x86_64 GNU/LinuxThe freezes occur during normal desktop usage. After rebooting and checking logs, I noticed recurring i915 DRM errors related to GSC proxy initialization.
**System info:**
- Distro: Arch Linux
- Kernel: linux-lts 6.6.x (also reproducible)
- Mesa: 25.2.2-2
- CPU/GPU: Intel Meteor Lake (iGPU, 7d51)
- Boot parameters: i915.force_probe=* i915.enable_dc=0 i915.enable_psr=0
**Logs (journalctl -k):**
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] Found METEORLAKE (device ID 7d51) display version 14.00 stepping D0
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] GT0: GuC firmware i915/mtl_guc_70.bin version 70.44.1
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] GT1: GuC firmware i915/mtl_guc_70.bin version 70.44.1
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] GT1: HuC firmware i915/mtl_huc_gsc.bin version 8.5.4
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] GT1: HuC: authenticated for clear media
Sep 17 16:27:22 homecomp kernel: i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
Sep 17 16:27:33 homecomp kernel: i915 0000:00:02.0: [drm] ERROR GT1: GSC proxy component didn't bind within the expected timeout
Sep 17 16:27:33 homecomp kernel: i915 0000:00:02.0: [drm] ERROR GT1: GSC proxy handler failed to initI also see freezes that do not leave a clear "GPU HANG" message in logs, but the system becomes unresponsive and requires a hard reboot.
**Troubleshooting done:**
- Tried both `linux` (6.11.x) and `linux-lts` kernels → freezes occur on both, but less reproducible on `linux`.
- Boot parameters tested:
- With `i915.force_probe=* i915.enable_dc=0 i915.enable_psr=0` → system boots, but freezes still happen.
- Adding `i915.enable_guc=0` or `i915.enable_pm=0` → system fails to start graphical environment.
- Adding `i915.enable_guc=2` → system fails to boot into graphics as well.
- Mesa is up-to-date from Arch repos (25.2.2-2).
**Questions:**
- Is the GSC proxy error related to the freezes?
- Should GuC/HuC be forced differently on Meteor Lake, or is this a kernel/i915 regression?
- Any recommended kernel parameters or patches to stabilize i915 on Meteor Lake?
Thanks in advance!
Offline
I've experienced similar problems on the same hardware with Ubuntu 24.04. Seems a kernel power management issue. These kernel parameters seems to work for me (so far):
intel_idle.max_cstate=0 processor.max_cstate=0 pcie_aspm=off i915.enable_psr=0 mem_sleep_default=deep i915.enable_dc=0 ahci.mobile_lpm_policy=1
I'll try to gradually increase cstate to find the optimal value that does not cause freezes.
Offline
On my Meteor Lake Lenovo laptop, I faced many UI freezes with only mouse cursor moving in Linux, SSH still works and I got kernel messages about expired timeouts. XE/i915 switch, PSR settings had no effect and intel_idle.max_cstate causes major issues with noise and battery.
I think I identified the root cause and a precise fix of the issue. Applicable to Meteor Lake, and maybe to similar issues with Lunar Lake (adjust CPU index).
i915/xe GPU interrupts are handled by a single LPI(!!!) core by default. I moved this IRQ handling to a regular LP core (17 in my case assuming SMT/HT is on and there are 0-21 cores in total) and disabled deep cstate exactly for this single core using this script:
#!/bin/bash
set -euo pipefail
CPU=17
STATES_DISABLE_GE=1
echo "Using CPU: $CPU"
echo "Disabling cpuidle states with index >= $STATES_DISABLE_GE on CPU $CPU"
# --- compute affinity mask from CPU ---
mask_dec=$((1 << CPU))
MASK_HEX=$(printf '%x' "$mask_dec")
echo "Computed IRQ affinity mask: 0x$MASK_HEX (CPU $CPU)"
# --- pin all i915/xe IRQs to this CPU ---
for irq in $(awk '/i915|xe/ {gsub(":", "", $1); print $1}' /proc/interrupts); do
echo "Setting affinity of IRQ $irq to mask 0x$MASK_HEX (CPU $CPU)"
echo "$MASK_HEX" | sudo tee "/proc/irq/$irq/smp_affinity" >/dev/null
done
# --- disable deep C-states on this CPU ---
for st in /sys/devices/system/cpu/cpu${CPU}/cpuidle/state[0-9]*; do
num=${st##*state} # index: 0,1,2,3...
if [ "$num" -ge "$STATES_DISABLE_GE" ]; then
name=$(<"${st}/name")
echo "Disabling C-state index $num ($name) on CPU $CPU"
echo 1 | sudo tee "${st}/disable" >/dev/null
fi
done
echo "Done."
sleep 1
head -1 /proc/interrupts; grep -Ei "i915|xe" /proc/interruptsFreezes are random and it is hard to verify for sure - maybe differenc cstates of P-core should be used, but it works for me without UI freezes for now, and battery usage is ok.
Last edited by borow200kg (2025-11-18 19:16:16)
Offline
Here is hang log message (for XE, but the same story with i915):
xe 0000:00:02.0: [drm] GT0: reset done
xe 0000:00:02.0: [drm] GT0: Timedout job: seqno=79627, lrc_seqno=79627, guc_id=19, flags=0x4 in no process [-1]
xe 0000:00:02.0: [drm:xe_devcoredump [xe]] Multiple hangs are occurring, but only the first snapshot was taken
kernel: ------------[ cut here ]------------
xe 0000:00:02.0: [drm] GT0: VM job timed out on non-killed execqueue Oct 06 07:31:34 cachyos-x8664 kernel: WARNING: CPU: 3 PID: 20272 at drivers/gpu/drm/xe/xe_guc_submit.c:1293 guc_exec_queue_timedout_job+0xadb/0xbb0 [xe]Last edited by borow200kg (2025-11-16 12:40:38)
Offline
I was experiencing similar issues on a ASUS ZenBook 14. Disabling Intel VMD in the BIOS, as suggested here, fixed the problem for me.
Last edited by gflima (2025-12-01 17:58:50)
Offline
update - now in 7.0 rc kernel xe irq is handled on core 18 by default (last LP, not LPE), but it still hangs for me without tweaks.
the script above (running with a slight delay after boot - look like it is rewritten if applied on multi-user.target) plus `isolcpus=17` kernel parameter to dedicate a LP core for gpu irq works fine or at least much more stable. guc and psr teaks have no effect for me.
Last edited by borow200kg (2026-03-20 10:27:21)
Offline
#!/bin/bash set -euo pipefail CPU=17 STATES_DISABLE_GE=1 echo "Using CPU: $CPU" echo "Disabling cpuidle states with index >= $STATES_DISABLE_GE on CPU $CPU" # --- compute affinity mask from CPU --- mask_dec=$((1 << CPU)) MASK_HEX=$(printf '%x' "$mask_dec") echo "Computed IRQ affinity mask: 0x$MASK_HEX (CPU $CPU)" # --- pin all i915/xe IRQs to this CPU --- for irq in $(awk '/i915|xe/ {gsub(":", "", $1); print $1}' /proc/interrupts); do echo "Setting affinity of IRQ $irq to mask 0x$MASK_HEX (CPU $CPU)" echo "$MASK_HEX" | sudo tee "/proc/irq/$irq/smp_affinity" >/dev/null done # --- disable deep C-states on this CPU --- for st in /sys/devices/system/cpu/cpu${CPU}/cpuidle/state[0-9]*; do num=${st##*state} # index: 0,1,2,3... if [ "$num" -ge "$STATES_DISABLE_GE" ]; then name=$(<"${st}/name") echo "Disabling C-state index $num ($name) on CPU $CPU" echo 1 | sudo tee "${st}/disable" >/dev/null fi done echo "Done." sleep 1 head -1 /proc/interrupts; grep -Ei "i915|xe" /proc/interrupts
I tried this script, and it fixed the issue with my Intel Core Ultra 9 185H! For me, none of the usual tweaks with PSR or similar options helped at all.
The problem was persistent across all distributions and affected both the i915 and Xe drivers. Without this fix, the constant freezes made desktop Linux completely unusable on Meteor Lake.
Thank you!
Offline