CachyOS / CachyOS/linux-cachyos

[Patch Request] drm/xe: Implement Wa_22016122933 to fix GuC TLB invalidation ack stalls on Arrow Lake

Open
#1,036 0 comments 0 reactions 2 assignees Claimed by @ptr1337 View on GitHub
enhancement
Dominant language
Shell
Stars
4.5k
Forks
160
Avg merge
2d 12h
Merged PRs (30d)
1

Description

### Pre-flight checklist

- [x] I have searched existing issues/PRs and this has not been requested before.
- [x] I have read the [Contributing Guidelines](https://github.com/CachyOS/linux-cachyos/blob/master/CONTRIBUTING.md).

### Request type

- [x] New patch / patchset inclusion
- [ ] Kernel config change (enable/disable option)
- [ ] New kernel variant
- [ ] Scheduler tuning / addition
- [ ] Compiler / LTO / PGO optimization
- [ ] Security hardening
- [x] Driver or hardware enablement
- [x] #1039

### Summary
Requesting the inclusion of the v3 patch series for `drm/xe` implementing `Wa_22016122933`.

On Arrow Lake-S (ARL) systems using the `xe` driver, media workloads and video acceleration trigger frequent GuC TLB invalidation ack stall timeouts and platform freezes (`*ERROR* TLB invalidation fence timeout`). This occurs because the CPU reads stale cache lines from the G2H CTB on the standalone media GT.

### Hardware Details
- **System:** Lenovo ThinkCentre M70t Gen 6 (Mobo: 3376)
- **CPU:** Intel Core Ultra 5 235 (Arrow Lake-S, 14 cores)
- **GPU:** Intel Arrow Lake-S [Intel Graphics] (PCI ID: `00:02.0`, Device ID: `7d67`, rev 06)
- **Driver:** `xe` (boot parameter: `i915.force_probe=!7d67 xe.force_probe=7d67`)
- **Desktop Environment:** KDE Plasma 6.7.5 (Wayland), Mesa 26.2.2-arch3.2

### Patch References
- **Mailing list thread:** https://mid.mail-archive.com/dri-devel%40lists.freedesktop.org/msg630443.html
- **Message-ID:** `20260824140748.54974-1-talesam@gmail.com`
- **GitLab tracking issue:** https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8678

### Testing & Verification
Tested against `linux-cachyos` (7.2.4):
- All 3 patches in the v3 series applied cleanly to the CachyOS kernel tree without merge conflicts.
- Completely resolves the GuC TLB invalidation timeouts and desktop/media freezes.

### dmesg Comparison (Before vs After)

```text
--- BEFORE PATCH (Kernel 7.2.4-3) ---
[ 22.325724] xe 0000:00:02.0: [drm] *ERROR* TLB invalidation fence timeout, seqno=3517 recv=3516
[ 64.175200] evm: overlay not supported
[ 143.348035] xe 0000:00:02.0: [drm] *ERROR* TLB invalidation fence timeout, seqno=13094 recv=13093

--- AFTER PATCH (Kernel 7.2.4-1 + Wa_22016122933) ---
[ 0.000000] Command line: quiet nowatchdog splash rw rootflags=subvol=/@ root=UUID=9db6a305-38e5-44a9-b9bf-221aef6389cb i915.force_probe=!7d67 xe.force_probe=7d67
[ 1.713912] xe 0000:00:02.0: vgaarb: deactivate vga console
[ 1.714077] xe 0000:00:02.0: [drm] Support for SR-IOV is not available
[ 1.714150] xe 0000:00:02.0: [drm] Initialized xe for 0000:00:02.0 on minor 0

### Motivation / use case

Prevents platform freezes and GPU driver crashes on Arrow Lake (ARL) systems using the `xe` driver.

Currently, media workloads and hardware video acceleration trigger frequent GuC TLB invalidation ack stall timeouts (`*ERROR* TLB invalidation fence timeout`). This happens because the CPU reads stale cache lines from the G2H CTB on the standalone media GT.

Implementing `Wa_22016122933` resolves the caching erratum, completely eliminating the timeouts and restoring stability under Wayland and media workloads.

### Patch / upstream reference (if available)

https://lore.kernel.org/all/20260824140748.54974-1-talesam@gmail.com/
https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8678

### Testing / benchmarks

Tested on `linux-cachyos` (7.2.4-1):
- All 3 patches in the v3 series applied cleanly to the CachyOS kernel tree without merge conflicts.
- Hardware: Intel Core Ultra 5 235 (Arrow Lake-S) on Lenovo ThinkCentre M70t Gen 6 (Device ID `7d67`).
- Desktop: KDE Plasma 6.7.5 (Wayland), Mesa 26.2.2.

```text
--- BEFORE PATCH (Kernel 7.2.4-3) ---
[ 22.325724] xe 0000:00:02.0: [drm] *ERROR* TLB invalidation fence timeout, seqno=3517 recv=3516
[ 64.175200] evm: overlay not supported
[ 143.348035] xe 0000:00:02.0: [drm] *ERROR* TLB invalidation fence timeout, seqno=13094 recv=13093

--- AFTER PATCH (Kernel 7.2.4-1 + Wa_22016122933) ---
[ 0.000000] Command line: quiet nowatchdog splash rw rootflags=subvol=/@ root=UUID=9db6a305-38e5-44a9-b9bf-221aef6389cb i915.force_probe=!7d67 xe.force_probe=7d67
[ 1.713912] xe 0000:00:02.0: vgaarb: deactivate vga console
[ 1.714077] xe 0000:00:02.0: [drm] Support for SR-IOV is not available
[ 1.714150] xe 0000:00:02.0: [drm] Initialized xe for 0000:00:02.0 on minor 0

Result: Zero TLB invalidation timeouts and zero media freezes after applying the patch.

### Additional context

The series consists of 3 patches:
1. `drm/xe: Capture devcoredump on TLB invalidation timeout`
2. `drm/xe: Log when a timed out TLB invalidation ack finally arrives`
3. `drm/xe: Implement Wa_22016122933`

It carries no extra external dependencies and builds cleanly with default CachyOS flags.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.