All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] drm/xe: fix GuC TLB invalidation ack stalls on ARL (Wa_22016122933)
@ 2026-08-13  2:30 Tales A. Mendonça
  2026-08-13  2:30 ` [PATCH v2 1/3] drm/xe: Capture devcoredump on TLB invalidation timeout Tales A. Mendonça
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Tales A. Mendonça @ 2026-08-13  2:30 UTC (permalink / raw)
  To: intel-xe
  Cc: matthew.brost, daniele.ceraolospurio, stuart.summers,
	julia.filipchuk, thomas.hellstrom, rodrigo.vivi, dri-devel,
	Tales A. Mendonça

Hi,

v2 of the TLB invalidation ack stall series for ARL, tracked in:

  https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8678

The investigation concluded since v1: the GuC always replied in time.
The CPU was reading a stale cache line of the G2H CTB - the GT1 caching
bug that i915 works around as Wa_22016122933 and xe never inherited.
Thanks Daniele for spotting the GT1 pattern in the GuC logs and
suggesting the test, and Matt for the review and the guidance to mirror
the i915 workaround.

Patch 3 is new and is the actual fix: Wa_22016122933 for xe, scoped
like i915 (media GT on media version 13.00) and covering the GuC-shared
allocations the CPU reads from.

Validation of patch 3 on two ARL machines (7d51 and 7dd1): before,
20-60 ack stalls/day, every day, for weeks, on two GuC firmware
versions; after, zero stalls across 6+ days combined and >5M TLB
invalidations. The 7dd1 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.

Patches 1-2 are the diagnostics that made the investigation possible,
updated per Matt's v1 review.

v1 -> v2:
- Dropped the "kick" workaround (RFC patch 3): obsolete now that the
  root cause is fixed by Wa_22016122933.
- Patch 1: unified with the existing devcoredump path -
  __xe_devcoredump() taking a GT plus nullable q/job, with
  xe_devcoredump()/xe_devcoredump_gt() wrapper macros (Matt).
- Patch 2: record the first timed out seqno instead of the last one,
  and use xe_warn() (Matt).
- New patch 3: implement Wa_22016122933.

Based on today's drm-tip. 

Thanks,
Tales

Tales A. Mendonça (3):
  drm/xe: Capture devcoredump on TLB invalidation timeout
  drm/xe: Log when a timed out TLB invalidation ack finally arrives
  drm/xe: Implement Wa_22016122933

 drivers/gpu/drm/xe/xe_devcoredump.c     | 46 ++++++++++++++-----------
 drivers/gpu/drm/xe/xe_devcoredump.h     | 15 +++++---
 drivers/gpu/drm/xe/xe_guc.c             | 16 +++++++++
 drivers/gpu/drm/xe/xe_guc.h             |  2 ++
 drivers/gpu/drm/xe/xe_guc_ads.c         |  3 +-
 drivers/gpu/drm/xe/xe_guc_ct.c          |  6 ++--
 drivers/gpu/drm/xe/xe_guc_log.c         |  7 ++--
 drivers/gpu/drm/xe/xe_guc_pc.c          |  3 +-
 drivers/gpu/drm/xe/xe_tlb_inval.c       | 39 +++++++++++++++++++++
 drivers/gpu/drm/xe/xe_tlb_inval_types.h | 17 +++++++++
 drivers/gpu/drm/xe/xe_wa_oob.rules      |  1 +
 11 files changed, 124 insertions(+), 31 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-08-13  2:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13  2:30 [PATCH v2 0/3] drm/xe: fix GuC TLB invalidation ack stalls on ARL (Wa_22016122933) Tales A. Mendonça
2026-08-13  2:30 ` [PATCH v2 1/3] drm/xe: Capture devcoredump on TLB invalidation timeout Tales A. Mendonça
2026-08-13  2:47   ` sashiko-bot
2026-08-13  2:30 ` [PATCH v2 2/3] drm/xe: Log when a timed out TLB invalidation ack finally arrives Tales A. Mendonça
2026-08-13  2:30 ` [PATCH v2 3/3] drm/xe: Implement Wa_22016122933 Tales A. Mendonça
2026-08-13  2:47   ` sashiko-bot
2026-08-13  2:37 ` ✗ CI.checkpatch: warning for drm/xe: fix GuC TLB invalidation ack stalls on ARL (Wa_22016122933) Patchwork
2026-08-13  2:39 ` ✓ CI.KUnit: success " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.