[PATCH 3/3] drm/xe/vf: Set submission version in xe_uc_fw struct

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Thu Feb 27 19:43:56 UTC 2025



On 2/27/2025 3:22 AM, Laguna, Lukasz wrote:
>
> On 2/25/2025 23:30, Daniele Ceraolo Spurio wrote:
>>
>>
>> On 2/25/2025 5:23 AM, Lukasz Laguna wrote:
>>> The VF driver has already negotiated the ABI version with GuC. What
>>> remains is to populate the generic xe_uc_fw struct with the version
>>> before initializing submission.
>>>
>>> Signed-off-by: Lukasz Laguna <lukasz.laguna at intel.com>
>>> ---
>>>   drivers/gpu/drm/xe/xe_guc.c | 9 ++++++++-
>>>   1 file changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>>> index bc1ff0a4e1e7..7b38447d902c 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc.c
>>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>>> @@ -703,9 +703,16 @@ int xe_guc_init(struct xe_guc *guc)
>>>     static int vf_guc_init_post_hwconfig(struct xe_guc *guc)
>>>   {
>>> +    struct xe_gt *gt = guc_to_gt(guc);
>>> +    struct xe_uc_fw_version ver;
>>>       int err;
>>>   -    err = xe_guc_submit_init(guc, 
>>> xe_gt_sriov_vf_guc_ids(guc_to_gt(guc)));
>>> +    err = xe_gt_sriov_vf_get_guc_ver(gt, &ver);
>>> +    xe_gt_assert(gt, !err);
>>> +
>>> +    xe_uc_fw_set_compatibility_ver(&guc->fw, &ver);
>>
>> Why not just pass &gt->sriov.vf.guc_version here, instead of copying 
>> it into another variable first?
>
> By using xe_gt_sriov_vf_get_guc_ver(), we additionally verify whether 
> the handshake completed successfully (major > 0). Only in that case we 
> set the version in xe_uc_fw.

But it's impossible to get here with a wrong major value, because 
xe_gt_sriov_vf_bootstrap() would fail. If you really want to have an 
emergency check then IMO it'd be better to just have:

xe_assert(xe, gt->sriov.vf.guc_version.major);

which you can have in this function without the need for an helper (the 
same assert exists in other SRIOV functions like xe_gt_sriov_vf_lmem).

Daniele

>
> Lukasz
>
>>
>> Daniele
>>
>>> +
>>> +    err = xe_guc_submit_init(guc, xe_gt_sriov_vf_guc_ids(gt));
>>>       if (err)
>>>           return err;
>>



More information about the Intel-xe mailing list