[PATCH] drm/xe/guc: Enable WA 14018913170

Poosa, Karthik karthik.poosa at intel.com
Tue Jan 16 13:08:43 UTC 2024


Hi Badal,

Fixed the issue in latest patch. Current GUC FW version stored in 
XE_UC_FW_VER_RELEASE.

On 16-01-2024 17:07, Nilawar, Badal wrote:
>
>
> On 16-01-2024 15:25, Karthik Poosa wrote:
>> The GuC handles the WA, the KMD just needs to set the flag to enable
>> it on the appropriate platforms.
>>
>> v2: Fixed CI checkpatch warning, alignment should match open 
>> parenthesis.
>>
>> Signed-off-by: Karthik Poosa <karthik.poosa at intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_guc.c        | 13 +++++++++++++
>>   drivers/gpu/drm/xe/xe_guc_fwif.h   |  1 +
>>   drivers/gpu/drm/xe/xe_wa_oob.rules |  5 +++++
>>   3 files changed, 19 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>> index 235d27b17ff9..5ecd9cd964de 100644
>> --- a/drivers/gpu/drm/xe/xe_guc.c
>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>> @@ -132,10 +132,15 @@ static u32 guc_ctl_ads_flags(struct xe_guc *guc)
>>       return flags;
>>   }
>>   +#define GUC_VER(maj, min, pat)    (((maj) << 16) | ((min) << 8) | 
>> (pat))
>> +
>>   static u32 guc_ctl_wa_flags(struct xe_guc *guc)
>>   {
>>       struct xe_device *xe = guc_to_xe(guc);
>>       struct xe_gt *gt = guc_to_gt(guc);
>> +    struct xe_uc_fw *uc_fw = &guc->fw;
>> +    struct xe_uc_fw_version *version = 
>> &uc_fw->versions.found[XE_UC_FW_VER_COMPATIBILITY];
> Why not XE_UC_FW_VER_RELEASE here?
>> +
>>       u32 flags = 0;
>>         if (XE_WA(gt, 22012773006))
>> @@ -165,6 +170,14 @@ static u32 guc_ctl_wa_flags(struct xe_guc *guc)
>>       if (XE_WA(gt, 1509372804))
>>           flags |= GUC_WA_RENDER_RST_RC6_EXIT;
>>   +    if (XE_WA(gt, 14018913170)) {
>> +        if (GUC_VER(version->major, version->minor, version->patch) 
>> >= GUC_VER(70, 7, 0))
>> +            flags |= GUC_WA_ENABLE_TSC_CHECK_ON_RC6;
>> +        else
>> +            drm_warn(&xe->drm, "can't apply WA 14018913170, GUC 
>> version expected >= 70.7.0, found %us %us %us\n",
>> +                 version->major, version->minor, version->patch);
> In bat results this warning is appearing even if guc firmware version 
> is > 70.7.0
>
> Regards,
> Badal
>> +    }
>> +
>>       return flags;
>>   }
>>   diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h 
>> b/drivers/gpu/drm/xe/xe_guc_fwif.h
>> index 4dd5a88a7826..c281fdbfd2d6 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_fwif.h
>> +++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
>> @@ -97,6 +97,7 @@ struct guc_update_exec_queue_policy {
>>   #define   GUC_WA_POLLCS            BIT(18)
>>   #define   GUC_WA_RENDER_RST_RC6_EXIT    BIT(19)
>>   #define   GUC_WA_RCS_REGS_IN_CCS_REGS_LIST    BIT(21)
>> +#define   GUC_WA_ENABLE_TSC_CHECK_ON_RC6    BIT(22)
>>     #define GUC_CTL_FEATURE            2
>>   #define   GUC_CTL_ENABLE_SLPC        BIT(2)
>> diff --git a/drivers/gpu/drm/xe/xe_wa_oob.rules 
>> b/drivers/gpu/drm/xe/xe_wa_oob.rules
>> index e73b84e01ea1..b138cbd51bdb 100644
>> --- a/drivers/gpu/drm/xe/xe_wa_oob.rules
>> +++ b/drivers/gpu/drm/xe/xe_wa_oob.rules
>> @@ -17,3 +17,8 @@
>>   14019821291    MEDIA_VERSION_RANGE(1300, 2000)
>>   14015076503    MEDIA_VERSION(1300)
>>   16020292621    GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
>> +14018913170    GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
>> +        MEDIA_VERSION(2000), GRAPHICS_STEP(A0, A1)
>> +        GRAPHICS_VERSION_RANGE(1270, 1274)
>> +        MEDIA_VERSION(1300)
>> +        PLATFORM(DG2)


More information about the Intel-xe mailing list