[Intel-xe] [PATCH 3/7] drm/xe/xe2: Follow XeHPC for TLB invalidation
Lucas De Marchi
lucas.demarchi at intel.com
Mon Oct 2 19:40:14 UTC 2023
On Fri, Sep 29, 2023 at 01:25:40PM -0700, Matt Roper wrote:
>On Thu, Sep 28, 2023 at 10:02:49PM -0700, Lucas De Marchi wrote:
>> Register GUC_TLB_INV_CR is gone in xe2. When GuC submission is not yet
>> enabled, make sure to follow the same path as XeHPC.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>
>Matches the invalidation descriptor structure from bspec 59311.
>
>Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
>
>Although I am uncertain that the general invalidation code here is
>entirely correct, even for PVC. Since completion only gets delivered to
>the GuC (which isn't up and running yet at the point we're using this),
I think the point here is not about it being up and running yet, but
rather having submission working. These are 2 different things.
Lucas De Marchi
>we should probably be checking that the 'valid' bit has returned to 0
>from the previous request before trying to submit another invalidation
>request. But assuming that's needed, it would be a change for a
>different patch.
>
>
>Matt
>
>> ---
>> drivers/gpu/drm/xe/xe_ggtt.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>> index 99b54794917e..d7b3d008ce57 100644
>> --- a/drivers/gpu/drm/xe/xe_ggtt.c
>> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
>> @@ -263,7 +263,7 @@ static void ggtt_invalidate_gt_tlb(struct xe_gt *gt)
>> } else if (xe_device_uc_enabled(gt_to_xe(gt))) {
>> struct xe_device *xe = gt_to_xe(gt);
>>
>> - if (xe->info.platform == XE_PVC) {
>> + if (xe->info.platform == XE_PVC || GRAPHICS_VER(xe) >= 20) {
>> xe_mmio_write32(gt, PVC_GUC_TLB_INV_DESC1,
>> PVC_GUC_TLB_INV_DESC1_INVALIDATE);
>> xe_mmio_write32(gt, PVC_GUC_TLB_INV_DESC0,
>> --
>> 2.40.1
>>
>
>--
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation
More information about the Intel-xe
mailing list