[PATCH v2 0/3] drm/xe: fix GuC TLB invalidation ack stalls on ARL (Wa_22016122933)

Tales A. Mendonça <[email protected]>
Newsgroups org.freedesktop.lists.intel-xe,org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.