✗ CI.checkpatch: warning for drm/xe: fix GuC TLB inv alidation ack stalls on ARL (Wa_22016122933)
Patchwork <[email protected]>
| Newsgroups | org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <178658862875.45879.9659455953891192280@61270ab9df2a> |
== Series Details == Series: drm/xe: fix GuC TLB invalidation ack stalls on ARL (Wa_22016122933) URL : https://patchwork.freedesktop.org/series/172110/ State : warning == Summary == + KERNEL=/kernel + git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + git -C mt rev-list -n1 origin/master 061140b9bc586ae7f40abc1249c97e1cc72d1b9d + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit f8708fc2a54c324f1b3ca8eb99cd20b5847f69dd Author: Tales A. Mendonça <[email protected]> Date: Wed Aug 12 23:30:16 2026 -0300 drm/xe: Implement Wa_22016122933 On platforms with a standalone media GT and media version 13.00 (MTL/ARL), memory shared between the CPU and the media GT's GuC must not be mapped cached on the CPU side: the CPU can otherwise read stale cache lines for data the GuC has already written. i915 implements this as Wa_22016122933 (see intel_gt_needs_wa_22016122933(), used by intel_guc_allocate_vma() and intel_gt_coherent_map_type()); xe never inherited it. The visible symptom on ARL is TLB invalidation acks stalling for a near-constant ~2.3s: the GuC writes the G2H ack in time, but the CPU keeps reading a stale (empty) view of the G2H CTB until the line is naturally evicted, so the fence timeout at 2.25s fires first. GuC log decode confirmed all invalidations were handled promptly by the firmware, and only the media GT was affected. See Link for the full investigation (three machines affected: 7d51, 7dd1, Arc Pro 130T). Add the OOB workaround scoped like i915 (media version 13.00, media GT only - MEDIA_VERSION() OOB rules only match the media GT on standalone media platforms) and apply XE_BO_FLAG_NEEDS_UC to the GuC-shared allocations the CPU reads from: the CTBs, the GuC log, ADS and the SLPC shared data. hwconfig and the G2G buffer are allocated on the primary GT only, where the workaround does not apply. Validation on two ARL machines (7d51 and 7dd1): before, 20-60 TLB invalidation ack stalls per day, every day, for weeks, on every kernel and on two GuC firmware versions (70.53.0 and 70.72.1). After: zero stalls across 6+ days of combined runtime and >5M TLB invalidations processed under the same workloads. The second machine, which could not survive a day of media workloads on xe without a platform freeze, ran 34h+ continuously including video transcoding with zero incidents. Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8678 Signed-off-by: Tales A. Mendonça <[email protected]> + /mt/dim checkpatch 707b81710802330f08e561e54d174f74abdb10e5 drm-intel 64c6eca650bf drm/xe: Capture devcoredump on TLB invalidation timeout -:168: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_q' - possible side-effects? #168: FILE: drivers/gpu/drm/xe/xe_devcoredump.h:34: +#define xe_devcoredump(_q, _job, _fmt, ...) \ + __xe_devcoredump((_q)->gt, _q, _job, _fmt, ##__VA_ARGS__) total: 0 errors, 0 warnings, 1 checks, 184 lines checked 36c3128c8c80 drm/xe: Log when a timed out TLB invalidation ack finally arrives -:24: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #24: TLB invalidation late ack: seqno=10992 recv=10992, request-to-ack=2314ms, timeout-to-ack=45ms total: 0 errors, 1 warnings, 0 checks, 66 lines checked f8708fc2a54c drm/xe: Implement Wa_22016122933