From: Matthew Brost <matthew.brost@intel.com>
To: intel-xe@lists.freedesktop.org
Subject: [PATCH v3 3/7] drm/xe: Add ring start to LRC snapshot
Date: Tue, 12 Nov 2024 14:01:23 -0800 [thread overview]
Message-ID: <20241112220127.1369527-4-matthew.brost@intel.com> (raw)
In-Reply-To: <20241112220127.1369527-1-matthew.brost@intel.com>
Add LRC ring start register to LRC snapshot to verify no LRC register
corruption upon hang. This could be possible if the indirect ring state
was mapped to user space or via an internal KMD memory corruption.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
---
drivers/gpu/drm/xe/xe_lrc.c | 10 ++++++++++
drivers/gpu/drm/xe/xe_lrc.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index cc77e5132157..22e58c6e2a35 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -1061,6 +1061,14 @@ u32 xe_lrc_ring_tail(struct xe_lrc *lrc)
return xe_lrc_read_ctx_reg(lrc, CTX_RING_TAIL) & TAIL_ADDR;
}
+static u32 xe_lrc_ring_start(struct xe_lrc *lrc)
+{
+ if (xe_lrc_has_indirect_ring_state(lrc))
+ return xe_lrc_read_indirect_ctx_reg(lrc, INDIRECT_CTX_RING_START);
+ else
+ return xe_lrc_read_ctx_reg(lrc, CTX_RING_START);
+}
+
void xe_lrc_set_ring_head(struct xe_lrc *lrc, u32 head)
{
if (xe_lrc_has_indirect_ring_state(lrc))
@@ -1641,6 +1649,7 @@ struct xe_lrc_snapshot *xe_lrc_snapshot_capture(struct xe_lrc *lrc)
snapshot->head = xe_lrc_ring_head(lrc);
snapshot->tail.internal = lrc->ring.tail;
snapshot->tail.memory = xe_lrc_ring_tail(lrc);
+ snapshot->start = xe_lrc_ring_start(lrc);
snapshot->start_seqno = xe_lrc_start_seqno(lrc);
snapshot->seqno = xe_lrc_seqno(lrc);
snapshot->lrc_bo = xe_bo_get(lrc->bo);
@@ -1701,6 +1710,7 @@ void xe_lrc_snapshot_print(struct xe_lrc_snapshot *snapshot, struct drm_printer
drm_printf(p, "\tLRC Head: (memory) %u\n", snapshot->head);
drm_printf(p, "\tLRC Tail: (internal) %u, (memory) %u\n",
snapshot->tail.internal, snapshot->tail.memory);
+ drm_printf(p, "\tRing start: (memory) 0x%08x\n", snapshot->start);
drm_printf(p, "\tStart seqno: (memory) %d\n", snapshot->start_seqno);
drm_printf(p, "\tSeqno: (memory) %d\n", snapshot->seqno);
drm_printf(p, "\tTimestamp: 0x%08x\n", snapshot->ctx_timestamp);
diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
index 37ca321ed492..b459dcab8787 100644
--- a/drivers/gpu/drm/xe/xe_lrc.h
+++ b/drivers/gpu/drm/xe/xe_lrc.h
@@ -28,6 +28,7 @@ struct xe_lrc_snapshot {
u32 ring_addr;
u32 indirect_context_desc;
u32 head;
+ u32 start;
struct {
u32 internal;
u32 memory;
--
2.34.1
next prev parent reply other threads:[~2024-11-12 22:01 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 22:01 [PATCH v3 0/7] Devcoredump Improvements Matthew Brost
2024-11-12 22:01 ` [PATCH v3 1/7] drm/xe: Add xe_ring_lrc_is_idle() helper Matthew Brost
2024-11-12 22:01 ` [PATCH v3 2/7] drm/xe: Add ring address to LRC snapshot Matthew Brost
2024-11-12 22:01 ` Matthew Brost [this message]
2024-11-12 22:01 ` [PATCH v3 4/7] drm/xe: Improve schedule disable response failure Matthew Brost
2024-11-14 1:48 ` John Harrison
2024-11-12 22:01 ` [PATCH v3 5/7] drm/xe: Add exec queue param to devcoredump Matthew Brost
2024-11-12 22:01 ` [PATCH v3 6/7] drm/xe: Change xe_engine_snapshot_capture_for_job to be for queue Matthew Brost
2024-11-12 22:01 ` [PATCH v3 7/7] drm/xe: Wire devcoredump to LR TDR Matthew Brost
2024-11-14 2:01 ` John Harrison
2024-11-13 14:25 ` ✓ CI.Patch_applied: success for Devcoredump Improvements (rev4) Patchwork
2024-11-13 14:25 ` ✓ CI.checkpatch: " Patchwork
2024-11-13 14:27 ` ✓ CI.KUnit: " Patchwork
2024-11-13 14:31 ` ✗ CI.Build: failure " Patchwork
2024-11-13 18:16 ` ✓ CI.Patch_applied: success for Devcoredump Improvements (rev5) Patchwork
2024-11-13 18:17 ` ✓ CI.checkpatch: " Patchwork
2024-11-13 18:18 ` ✓ CI.KUnit: " Patchwork
2024-11-13 18:22 ` ✗ CI.Build: failure " Patchwork
2024-11-14 0:47 ` ✓ CI.Patch_applied: success for Devcoredump Improvements (rev6) Patchwork
2024-11-14 0:48 ` ✓ CI.checkpatch: " Patchwork
2024-11-14 0:49 ` ✓ CI.KUnit: " Patchwork
2024-11-14 0:54 ` ✗ CI.Build: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241112220127.1369527-4-matthew.brost@intel.com \
--to=matthew.brost@intel.com \
--cc=intel-xe@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox