[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