From: Michal Wajdeczko <michal.wajdeczko@intel.com>
To: "Michał Winiarski" <michal.winiarski@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 04/13] drm/xe/guc: Add string KLV encoding helper
Date: Mon, 6 Jul 2026 18:04:13 +0200 [thread overview]
Message-ID: <da12ce92-359f-4a21-bde7-03ee22d2635b@intel.com> (raw)
In-Reply-To: <ake4nA-cxhb1xsdB@nostramo>
On 7/3/2026 3:29 PM, Michał Winiarski wrote:
> On Tue, Jun 30, 2026 at 03:26:23PM +0200, Michal Wajdeczko wrote:
>> We also plan to encode a text data as KLV. Add helper for that too.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_guc_klv_helpers.c | 31 +++++++++++++++++++++++++
>> drivers/gpu/drm/xe/xe_guc_klv_helpers.h | 1 +
>> 2 files changed, 32 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc_klv_helpers.c b/drivers/gpu/drm/xe/xe_guc_klv_helpers.c
>> index e84d1f5f5c56..a5fcfc4a6c37 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_klv_helpers.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_klv_helpers.c
>> @@ -188,6 +188,11 @@ int xe_guc_klv_count(const u32 *klvs, u32 num_dwords)
>> return num_dwords ? -ENODATA : num_klvs;
>> }
>>
>> +static size_t to_num_bytes(u16 dwords)
>> +{
>> + return dwords * sizeof(u32);
>> +}
>> +
>> static u16 to_num_dwords(size_t size)
>> {
>> return round_up(size, sizeof(u32)) / sizeof(u32);
>> @@ -243,3 +248,29 @@ u32 *xe_guc_klv_encode_u64(u32 *klvs, u32 avail, u16 key, u64 value)
>> *klvs++ = upper_32_bits(value);
>> return klvs;
>> }
>> +
>> +/**
>> + * xe_guc_klv_encode_string() - Encode string as KLV.
>> + * @klvs: the buffer where to place KLV
>> + * @avail: number of dwords (u32) available in the buffer
>> + * @key: key to be used
>> + * @s: string to be encoded
>> + *
>> + * Return: pointer to the buffer location past the encoded KLV or
>> + * an ERR_PTR if there was no space to encode the KLV.
>> + */
>> +u32 *xe_guc_klv_encode_string(u32 *klvs, u32 avail, u16 key, const char *s)
>> +{
>> + size_t size = strnlen(s, FIELD_MAX(GUC_KLV_0_LEN) - 1) + 1; /* \0 */
>
> We're mixing up units (dwords / bytes) here.
oops, it supposed to be to_num_bytes()
> Also - should we error out if the string would get truncated?
it's a good idea
>
> Thanks,
> -Michał
>
>> + u16 len = to_num_dwords(size);
>> +
>> + if (IS_ERR(klvs))
>> + return klvs;
>> +
>> + if (avail < GUC_KLV_LEN_MIN + len)
>> + return ERR_PTR(-ENOSPC);
>> +
>> + *klvs++ = PREP_GUC_KLV(key, len);
>> + strscpy_pad((void *)klvs, s, to_num_bytes(len));
>> + return klvs + len;
>> +}
>> diff --git a/drivers/gpu/drm/xe/xe_guc_klv_helpers.h b/drivers/gpu/drm/xe/xe_guc_klv_helpers.h
>> index 713ef7f7b9f2..1c576456efc5 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_klv_helpers.h
>> +++ b/drivers/gpu/drm/xe/xe_guc_klv_helpers.h
>> @@ -19,6 +19,7 @@ int xe_guc_klv_count(const u32 *klvs, u32 num_dwords);
>>
>> u32 *xe_guc_klv_encode_u32(u32 *klvs, u32 avail, u16 key, u32 value);
>> u32 *xe_guc_klv_encode_u64(u32 *klvs, u32 avail, u16 key, u64 value);
>> +u32 *xe_guc_klv_encode_string(u32 *klvs, u32 avail, u16 key, const char *s);
>>
>> /**
>> * PREP_GUC_KLV - Prepare KLV header value based on provided key and len.
>> --
>> 2.47.1
>>
next prev parent reply other threads:[~2026-07-06 16:04 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 13:26 [PATCH 00/13] drm/xe: Add and use more KLV helpers Michal Wajdeczko
2026-06-30 13:26 ` [PATCH 01/13] drm/xe/guc: Allow to print single KLV Michal Wajdeczko
2026-07-03 11:10 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 02/13] drm/xe/guc: Prepare to print group KLVs Michal Wajdeczko
2026-07-03 11:11 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 03/13] drm/xe/guc: Add basic KLV encoding helpers Michal Wajdeczko
2026-07-03 12:58 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 04/13] drm/xe/guc: Add string KLV encoding helper Michal Wajdeczko
2026-07-03 13:29 ` Michał Winiarski
2026-07-06 16:04 ` Michal Wajdeczko [this message]
2026-06-30 13:26 ` [PATCH 05/13] drm/xe/guc: Add object " Michal Wajdeczko
2026-07-03 14:33 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 06/13] drm/xe/guc: Add KLV parsing helper Michal Wajdeczko
2026-07-03 14:40 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 07/13] drm/xe/guc: Formalize Reserved KLVs Michal Wajdeczko
2026-07-03 13:31 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 08/13] drm/xe/tests: Add GuC KLV helpers basic tests Michal Wajdeczko
2026-07-03 14:17 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 09/13] drm/xe/tests: Add string encoding helper test Michal Wajdeczko
2026-07-03 20:40 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 10/13] drm/xe/tests: Add object " Michal Wajdeczko
2026-07-03 20:47 ` Michał Winiarski
2026-07-06 16:34 ` Michal Wajdeczko
2026-06-30 13:26 ` [PATCH 11/13] drm/xe/tests: Add GuC KLV printer test Michal Wajdeczko
2026-07-03 20:49 ` Michał Winiarski
2026-06-30 13:26 ` [PATCH 12/13] drm/xe/tests: Add migration packet test Michal Wajdeczko
2026-07-03 13:44 ` Michał Winiarski
2026-07-06 16:42 ` Michal Wajdeczko
2026-06-30 13:26 ` [PATCH 13/13] drm/xe/pf: Handle migration descriptor using KLV helpers Michal Wajdeczko
2026-07-03 20:50 ` Michał Winiarski
2026-06-30 13:47 ` ✗ CI.checkpatch: warning for drm/xe: Add and use more " Patchwork
2026-06-30 13:49 ` ✓ CI.KUnit: success " Patchwork
2026-06-30 14:42 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-01 5:22 ` ✓ Xe.CI.FULL: " 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=da12ce92-359f-4a21-bde7-03ee22d2635b@intel.com \
--to=michal.wajdeczko@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=michal.winiarski@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.