[Intel-xe] [PATCH v3 15/20] drm/xe/uc: Store firmware binary in system-memory backed BO

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Mon Nov 20 21:34:36 UTC 2023



On 11/20/2023 12:04 PM, Lucas De Marchi wrote:
> On Tue, Nov 14, 2023 at 02:02:26PM +0100, Michał Winiarski wrote:
>> The firmware loading for GuC is about to be moved, and will happen much
>> earlier in the probe process, when local-memory is not yet available.
>> While this has the potential to make the firmware loading process
>> slower, this is only happening during probe and full device reset.
>> Since both are not hot-paths - store all UC-like firmware in system
>> memory.
>
> is this really possible? AFAIR we needed it to be in vram for DG2.
> Or maybe it was a WA that is not needed anymore?
>
> +Daniele. Do you remember any limitation here?

It's a performance thing. Having the objects in vram makes them faster 
to transfer to WOPCM, which is relevant in scenarios where we need to 
reload the GuC, of which I think the most critical is the S3 exit. I 
don't know if we ever took actual measurements on how much faster 
loading from vram actually is, so no idea if the performance impact is 
acceptable or not.

Daniele

>
> Lucas De Marchi
>
>>
>> Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_uc_fw.c | 4 +---
>> 1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_uc_fw.c 
>> b/drivers/gpu/drm/xe/xe_uc_fw.c
>> index df46751fb5959..b04dd7d034d83 100644
>> --- a/drivers/gpu/drm/xe/xe_uc_fw.c
>> +++ b/drivers/gpu/drm/xe/xe_uc_fw.c
>> @@ -636,8 +636,6 @@ static int uc_fw_copy(struct xe_uc_fw *uc_fw, 
>> const void *data, size_t size, u32
>> int xe_uc_fw_init(struct xe_uc_fw *uc_fw)
>> {
>>     const struct firmware *fw = NULL;
>> -    struct xe_gt *gt = uc_fw_to_gt(uc_fw);
>> -    struct xe_tile *tile = gt_to_tile(gt);
>>     int err;
>>
>>     err = uc_fw_request(uc_fw, &fw);
>> @@ -649,7 +647,7 @@ int xe_uc_fw_init(struct xe_uc_fw *uc_fw)
>>         return 0;
>>
>>     err = uc_fw_copy(uc_fw, fw->data, fw->size,
>> -             XE_BO_CREATE_VRAM_IF_DGFX(tile) | XE_BO_CREATE_GGTT_BIT);
>> +             XE_BO_CREATE_SYSTEM_BIT | XE_BO_CREATE_GGTT_BIT);
>>
>>     uc_fw_release(fw);
>>
>> -- 
>> 2.42.1
>>



More information about the Intel-xe mailing list