From: Nirmoy Das <nirmoy.das@linux.intel.com>
To: Zhanjun Dong <zhanjun.dong@intel.com>, intel-xe@lists.freedesktop.org
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>,
"Everest K.C." <everestkc@everestkc.com.np>
Subject: Re: [PATCH v1 1/1] drm/xe/guc: Fix missing init value and add register order check
Date: Thu, 24 Oct 2024 13:27:21 +0200 [thread overview]
Message-ID: <a6db328f-54ef-4941-99cf-b7da52287345@linux.intel.com> (raw)
In-Reply-To: <20241023192307.746525-1-zhanjun.dong@intel.com>
Hi Zhanjun,
There is a earlier patch regarding list->list check which is reviewed but not merged yet,
https://patchwork.freedesktop.org/patch/621250/?series=139810&rev=5
Could you please rebase your change on top of that and may be carry that along as
the latest rev of that patch is not sent to xe so CI report is missing.
Regards,
Nirmoy
On 10/23/2024 9:23 PM, Zhanjun Dong wrote:
> Fix missing initial value for last_value.
> For GuC capture register definition, it is required to define 64bit
> register in a pair of 2 consecutive 32bit register entries, low first,
> then hi. Add code to check this order.
>
> Fixes: 0f1fdf559225 ("drm/xe/guc: Save manual engine capture into capture list")
> Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_capture.c | 26 +++++++++++++++++++++++---
> 1 file changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
> index 8b6cb786a2aa..d7ff7dd60a1d 100644
> --- a/drivers/gpu/drm/xe/xe_guc_capture.c
> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
> @@ -102,6 +102,7 @@ struct __guc_capture_parsed_output {
> * A 64 bit register define requires 2 consecutive entries,
> * with low dword first and hi dword the second.
> * 2. Register name: null for incompleted define
> + * 3. Incorrect order will trigger XE_WARN.
> */
> #define COMMON_XELP_BASE_GLOBAL \
> { FORCEWAKE_GT, REG_32BIT, 0, 0, "FORCEWAKE_GT"}
> @@ -1678,10 +1679,10 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_
> struct xe_devcoredump *devcoredump = &xe->devcoredump;
> struct xe_devcoredump_snapshot *devcore_snapshot = &devcoredump->snapshot;
> struct gcap_reg_list_info *reginfo = NULL;
> - u32 last_value, i;
> - bool is_ext;
> + u32 i, last_value = 0;
> + bool is_ext, low32_ready = false;
>
> - if (!list || list->num_regs == 0)
> + if (!list || !list->list || list->num_regs == 0)
> return;
> XE_WARN_ON(!devcore_snapshot->matched_node);
>
> @@ -1706,11 +1707,27 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_
> value = reg->value;
> if (reg_desc->data_type == REG_64BIT_LOW_DW) {
> last_value = value;
> +
> + /*
> + * A 64 bit register define requires 2 consecutive
> + * entries in register list, with low dword first
> + * and hi dword the second, like:
> + * { XXX_REG_LO(0), REG_64BIT_LOW_DW, 0, 0, NULL},
> + * { XXX_REG_HI(0), REG_64BIT_HI_DW, 0, 0, "XXX_REG"},
> + *
> + * Incorrect order will trigger XE_WARN.
> + */
> + XE_WARN_ON(low32_ready); /* Possible double low here */
> + low32_ready = true;
> /* Low 32 bit dword saved, continue for high 32 bit */
> continue;
> } else if (reg_desc->data_type == REG_64BIT_HI_DW) {
> u64 value_qw = ((u64)value << 32) | last_value;
>
> + /* Incorrect 64bit register order. Possible missing low */
> + XE_WARN_ON(!low32_ready);
> + low32_ready = false;
> +
> drm_printf(p, "\t%s: 0x%016llx\n", reg_desc->regname, value_qw);
> continue;
> }
> @@ -1727,6 +1744,9 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_
> drm_printf(p, "\t%s: 0x%08x\n", reg_desc->regname, value);
> }
> }
> +
> + /* Incorrect 64bit register order. Possible missing high */
> + XE_WARN_ON(low32_ready);
> }
>
> /**
next prev parent reply other threads:[~2024-10-24 11:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 19:23 [PATCH v1 1/1] drm/xe/guc: Fix missing init value and add register order check Zhanjun Dong
2024-10-24 11:09 ` ✓ CI.Patch_applied: success for series starting with [v1,1/1] " Patchwork
2024-10-24 11:09 ` ✓ CI.checkpatch: " Patchwork
2024-10-24 11:10 ` ✓ CI.KUnit: " Patchwork
2024-10-24 11:22 ` ✓ CI.Build: " Patchwork
2024-10-24 11:24 ` ✓ CI.Hooks: " Patchwork
2024-10-24 11:26 ` ✓ CI.checksparse: " Patchwork
2024-10-24 11:27 ` Nirmoy Das [this message]
2024-10-24 14:13 ` [PATCH v1 1/1] " Dong, Zhanjun
2024-10-24 23:50 ` Teres Alexis, Alan Previn
2024-10-31 14:22 ` Dong, Zhanjun
2024-10-31 16:55 ` Dong, Zhanjun
2024-10-24 11:47 ` ✗ CI.BAT: failure for series starting with [v1,1/1] " Patchwork
2024-10-25 6:27 ` ✓ CI.FULL: success " Patchwork
2024-10-29 0:00 ` ✓ CI.Patch_applied: success for series starting with [v1,1/1] drm/xe/guc: Fix missing init value and add register order check (rev2) Patchwork
2024-10-29 0:01 ` ✓ CI.checkpatch: " Patchwork
2024-10-29 0:02 ` ✓ CI.KUnit: " Patchwork
2024-10-29 0:13 ` ✓ CI.Build: " Patchwork
2024-10-29 0:16 ` ✓ CI.Hooks: " Patchwork
2024-10-29 0:17 ` ✓ CI.checksparse: " Patchwork
2024-10-29 0:40 ` ✗ CI.BAT: failure " Patchwork
2024-10-29 1:39 ` ✗ CI.FULL: " Patchwork
2024-10-31 22:38 ` [PATCH v1 1/1] drm/xe/guc: Fix missing init value and add register order check Teres Alexis, Alan Previn
2024-11-01 14:43 ` Dong, Zhanjun
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=a6db328f-54ef-4941-99cf-b7da52287345@linux.intel.com \
--to=nirmoy.das@linux.intel.com \
--cc=everestkc@everestkc.com.np \
--cc=intel-xe@lists.freedesktop.org \
--cc=rodrigo.vivi@intel.com \
--cc=zhanjun.dong@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox