[PATCH] drm/xe/guc: Enable WA_DUAL_QUEUE for newer platforms
Narvaez, Jesus
jesus.narvaez at intel.com
Thu Dec 5 07:21:16 UTC 2024
Looks good to me.
Reviewed-by: Jesus Narvaez <jesus.narvaez at intel.com>
- Jesus Narvaez
On 11/26/2024 5:11 PM, Daniele Ceraolo Spurio wrote:
> The DUAL_QUEUE_WA tells the GuC to not allow concurrent submissions
> on RCS and CCSes with different address spaces, which on DG2 is
> required as a WA for an HW bug. On newer platforms, this block has
> been moved in HW at the CS level, by stalling the RCS/CCS context
> switch when one of the other RCS/CCSes is busy with a different
> address space. While functionally correct, having a submission
> stalled on the HW limits the GuC ability to shuffle things around and
> can cause complications if the non-stalled submission runs for a long
> time, because the GuC doesn't know that the stalled submission isn't
> actually running and might declare it as hung. Therefore, we enable
> the DUAL_QUEUE_WA on all newer platforms to move management back to
> the GuC.
>
> Note that the GuC specs also recommend enabling this for all platforms
> starting from MTL that have a CCS.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: John Harrison <John.C.Harrison at Intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index df1ba94cf4ca..ddbfbdf901b0 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -151,7 +151,21 @@ static u32 guc_ctl_wa_flags(struct xe_guc *guc)
> if (XE_WA(gt, 14014475959))
> flags |= GUC_WA_HOLD_CCS_SWITCHOUT;
>
> - if (XE_WA(gt, 22011391025))
> + /*
> + * The DUAL_QUEUE_WA tells the GuC to not allow concurrent submissions
> + * on RCS and CCSes with different address spaces, which on DG2 is
> + * required as a WA for an HW bug. On newer platforms, this block has
> + * been moved in HW at the CS level, by stalling the RCS/CCS context
> + * switch when one of the other RCS/CCSes is busy with a different
> + * address space. While functionally correct, having a submission
> + * stalled on the HW limits the GuC ability to shuffle things around and
> + * can cause complications if the non-stalled submission runs for a long
> + * time, because the GuC doesn't know that the stalled submission isn't
> + * actually running and might declare it as hung. Therefore, we enable
> + * the DUAL_QUEUE_WA on all newer platforms to move management back to
> + * the GuC.
> + */
> + if (XE_WA(gt, 22011391025) || GRAPHICS_VERx100(xe) >= 1270)
> flags |= GUC_WA_DUAL_QUEUE;
>
> /*
More information about the Intel-xe
mailing list