From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: "José Roberto de Souza" <jose.souza@intel.com>
Cc: Maarten Lankhorst <dev@lankhorst.se>, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 4/9] drm/xe: Add batch buffer addresses to devcoredump
Date: Mon, 22 Jan 2024 15:13:34 -0500 [thread overview]
Message-ID: <Za7MbjVITw3itEJE@intel.com> (raw)
In-Reply-To: <20240122170445.108856-4-jose.souza@intel.com>
On Mon, Jan 22, 2024 at 09:04:40AM -0800, José Roberto de Souza wrote:
> Those addresses are necessary to Mesa tools knows where in VM are the
> batch buffers to parse and print instructions that are human readable.
>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Maarten Lankhorst <dev@lankhorst.se>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_devcoredump.c | 5 +++
> drivers/gpu/drm/xe/xe_devcoredump_types.h | 3 ++
> drivers/gpu/drm/xe/xe_sched_job.c | 38 +++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_sched_job.h | 5 +++
> drivers/gpu/drm/xe/xe_sched_job_types.h | 5 +++
> 5 files changed, 56 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c
> index 0f23ecc74b162..a0e3732440ab5 100644
> --- a/drivers/gpu/drm/xe/xe_devcoredump.c
> +++ b/drivers/gpu/drm/xe/xe_devcoredump.c
> @@ -94,6 +94,9 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset,
> xe_guc_ct_snapshot_print(coredump->snapshot.ct, &p);
> xe_guc_exec_queue_snapshot_print(coredump->snapshot.ge, &p);
>
> + drm_printf(&p, "\n**** Job ****\n");
> + xe_sched_job_snapshot_print(coredump->snapshot.job, &p);
> +
> drm_printf(&p, "\n**** HW Engines ****\n");
> for (i = 0; i < XE_NUM_HW_ENGINES; i++)
> if (coredump->snapshot.hwe[i])
> @@ -114,6 +117,7 @@ static void xe_devcoredump_free(void *data)
>
> xe_guc_ct_snapshot_free(coredump->snapshot.ct);
> xe_guc_exec_queue_snapshot_free(coredump->snapshot.ge);
> + xe_sched_job_snapshot_free(coredump->snapshot.job);
> for (i = 0; i < XE_NUM_HW_ENGINES; i++)
> if (coredump->snapshot.hwe[i])
> xe_hw_engine_snapshot_free(coredump->snapshot.hwe[i]);
> @@ -153,6 +157,7 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump,
>
> coredump->snapshot.ct = xe_guc_ct_snapshot_capture(&guc->ct, true);
> coredump->snapshot.ge = xe_guc_exec_queue_snapshot_capture(job);
> + coredump->snapshot.job = xe_sched_job_snapshot_capture(job);
>
> for_each_hw_engine(hwe, q->gt, id) {
> if (hwe->class != q->hwe->class ||
> diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h
> index 7fdad9c3d3dde..9a12959ed6b14 100644
> --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h
> +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h
> @@ -31,8 +31,11 @@ struct xe_devcoredump_snapshot {
> struct xe_guc_ct_snapshot *ct;
> /** @ge: Guc Engine snapshot */
> struct xe_guc_submit_exec_queue_snapshot *ge;
> +
> /** @hwe: HW Engine snapshot array */
> struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES];
> + /** @job: Snapshot of job state */
> + struct xe_sched_job_snapshot *job;
> };
>
> /**
> diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
> index 01106a1156ad8..cde1407867db6 100644
> --- a/drivers/gpu/drm/xe/xe_sched_job.c
> +++ b/drivers/gpu/drm/xe/xe_sched_job.c
> @@ -278,3 +278,41 @@ int xe_sched_job_last_fence_add_dep(struct xe_sched_job *job, struct xe_vm *vm)
>
> return drm_sched_job_add_dependency(&job->drm, fence);
> }
> +
> +struct xe_sched_job_snapshot *
> +xe_sched_job_snapshot_capture(struct xe_sched_job *job)
> +{
> + struct xe_exec_queue *q = job->q;
> + struct xe_device *xe = q->gt->tile->xe;
> + struct xe_sched_job_snapshot *snapshot;
> + size_t len = sizeof(*snapshot) + (sizeof(u64) * q->width);
> + u16 i;
> +
> + snapshot = kzalloc(len, GFP_ATOMIC);
> + if (!snapshot)
> + return NULL;
> +
> + snapshot->batch_addr_len = q->width;
> + for (i = 0; i < q->width; i++)
> + snapshot->batch_addr[i] = xe_device_uncanonicalize_addr(xe, job->batch_addr[i]);
> +
> + return snapshot;
> +}
> +
> +void xe_sched_job_snapshot_free(struct xe_sched_job_snapshot *snapshot)
> +{
> + kfree(snapshot);
> +}
> +
> +void
> +xe_sched_job_snapshot_print(struct xe_sched_job_snapshot *snapshot,
> + struct drm_printer *p)
> +{
> + u16 i;
> +
> + if (!snapshot)
> + return;
> +
> + for (i = 0; i < snapshot->batch_addr_len; i++)
> + drm_printf(p, "batch_addr[%u]: 0x%016llx\n", i, snapshot->batch_addr[i]);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_sched_job.h b/drivers/gpu/drm/xe/xe_sched_job.h
> index 34f475ba7f502..f1a660648cf00 100644
> --- a/drivers/gpu/drm/xe/xe_sched_job.h
> +++ b/drivers/gpu/drm/xe/xe_sched_job.h
> @@ -8,6 +8,7 @@
>
> #include "xe_sched_job_types.h"
>
> +struct drm_printer;
> struct xe_vm;
>
> #define XE_SCHED_HANG_LIMIT 1
> @@ -77,4 +78,8 @@ xe_sched_job_add_migrate_flush(struct xe_sched_job *job, u32 flags)
>
> bool xe_sched_job_is_migration(struct xe_exec_queue *q);
>
> +struct xe_sched_job_snapshot *xe_sched_job_snapshot_capture(struct xe_sched_job *job);
> +void xe_sched_job_snapshot_free(struct xe_sched_job_snapshot *snapshot);
> +void xe_sched_job_snapshot_print(struct xe_sched_job_snapshot *snapshot, struct drm_printer *p);
> +
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_sched_job_types.h b/drivers/gpu/drm/xe/xe_sched_job_types.h
> index 71213ba9735bc..377dc6b806eb8 100644
> --- a/drivers/gpu/drm/xe/xe_sched_job_types.h
> +++ b/drivers/gpu/drm/xe/xe_sched_job_types.h
> @@ -43,4 +43,9 @@ struct xe_sched_job {
> u64 batch_addr[];
> };
>
> +struct xe_sched_job_snapshot {
> + u16 batch_addr_len;
> + u64 batch_addr[];
> +};
> +
> #endif
> --
> 2.43.0
>
next prev parent reply other threads:[~2024-01-22 20:13 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-22 17:04 [PATCH 1/9] drm/xe: Remove double new line in devcoredump José Roberto de Souza
2024-01-22 17:04 ` [PATCH 2/9] drm/xe: Change devcoredump functions parameters to xe_sched_job José Roberto de Souza
2024-01-22 18:39 ` Summers, Stuart
2024-01-22 17:04 ` [PATCH 3/9] drm/xe: Add functions to convert regular address to canonical address and back José Roberto de Souza
2024-01-22 18:38 ` Summers, Stuart
2024-01-22 18:43 ` Souza, Jose
2024-01-24 15:16 ` Summers, Stuart
2024-01-24 15:20 ` Souza, Jose
2024-01-29 17:54 ` Summers, Stuart
2024-01-23 17:48 ` Jani Nikula
2024-01-22 17:04 ` [PATCH 4/9] drm/xe: Add batch buffer addresses to devcoredump José Roberto de Souza
2024-01-22 20:13 ` Rodrigo Vivi [this message]
2024-01-22 17:04 ` [PATCH 5/9] drm/xe: Nuke xe from xe_devcoredump José Roberto de Souza
2024-01-22 20:11 ` Rodrigo Vivi
2024-01-22 20:26 ` Souza, Jose
2024-01-22 20:40 ` Rodrigo Vivi
2024-01-22 17:04 ` [PATCH 6/9] drm/xe: Stash GMD_ID value in xe_gt José Roberto de Souza
2024-01-22 17:04 ` [PATCH 7/9] drm/xe: Print more device information in devcoredump José Roberto de Souza
2024-01-22 20:18 ` Rodrigo Vivi
2024-01-22 21:12 ` Souza, Jose
2024-01-22 17:04 ` [PATCH 8/9] drm/xe: Print registers spread in 2 u32 as u64 José Roberto de Souza
2024-01-22 20:14 ` Rodrigo Vivi
2024-01-22 17:04 ` [PATCH 9/9] drm/xe: Remove addional spaces in devcoredump HW Engines section José Roberto de Souza
2024-01-22 20:18 ` Rodrigo Vivi
2024-01-22 17:32 ` ✓ CI.Patch_applied: success for series starting with [1/9] drm/xe: Remove double new line in devcoredump Patchwork
2024-01-22 17:32 ` ✗ CI.checkpatch: warning " Patchwork
2024-01-22 17:33 ` ✓ CI.KUnit: success " Patchwork
2024-01-22 17:40 ` ✓ CI.Build: " Patchwork
2024-01-22 17:41 ` ✗ CI.Hooks: failure " Patchwork
2024-01-22 17:42 ` ✓ CI.checksparse: success " Patchwork
2024-01-22 18:05 ` ✓ CI.BAT: " Patchwork
2024-01-22 18:28 ` [PATCH 1/9] " Summers, Stuart
2024-01-22 18:40 ` Souza, Jose
2024-01-22 20:20 ` Rodrigo Vivi
2024-01-24 15:17 ` Summers, Stuart
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=Za7MbjVITw3itEJE@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=dev@lankhorst.se \
--cc=intel-xe@lists.freedesktop.org \
--cc=jose.souza@intel.com \
/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 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.