[PATCH] drm/xe/guc: Resend potentially lost H2G MMIO request

K V P, Satyanarayana satyanarayana.k.v.p at intel.com
Wed May 28 09:15:57 UTC 2025


Hi.
> -----Original Message-----
> From: Wajdeczko, Michal <Michal.Wajdeczko at intel.com>
> Sent: Wednesday, May 28, 2025 2:30 PM
> To: intel-xe at lists.freedesktop.org
> Cc: Wajdeczko, Michal <Michal.Wajdeczko at intel.com>; K V P, Satyanarayana
> <satyanarayana.k.v.p at intel.com>
> Subject: [PATCH] drm/xe/guc: Resend potentially lost H2G MMIO request
> 
> There could be a scenario where the VF driver is resuming faster
> than the driver PF is able to complete the VF FLR sequence which
> includes reset of the VF scratch registers.  This may result in
> deletion of the ongoing HXG message (it could be either a host
> request or a GuC response).
> 
> When we detect that HXG message was likey lost (scratch register
> with HXG header was zeroed) try to send this request once more
> before giving up.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_guc.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 350434a8b953..52453845d1bd 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1289,6 +1289,7 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc,
> const u32 *request,
>  	struct xe_reg reply_reg = xe_gt_is_media_type(gt) ?
>  		MED_VF_SW_FLAG(0) : VF_SW_FLAG(0);
>  	const u32 LAST_INDEX = VF_SW_FLAG_COUNT - 1;
> +	bool lost = false;
>  	int ret;
>  	int i;
> 
> @@ -1322,6 +1323,12 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc,
> const u32 *request,
>  			     FIELD_PREP(GUC_HXG_MSG_0_ORIGIN,
> GUC_HXG_ORIGIN_GUC),
>  			     50000, &reply, false);
>  	if (ret) {
> +		/* scratch registers might be cleared during FLR, try once more
> */
> +		if (!reply && !lost) {
> +			xe_gt_dbg(gt, "GuC mmio request %#x: lost, trying
> again\n", request[0]);
> +			lost = true;
> +			goto retry;
> +		}
>  timeout:
>  		xe_gt_err(gt, "GuC mmio request %#x: no reply %#x\n",
>  			  request[0], reply);
LGTM.
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
> --
> 2.47.1



More information about the Intel-xe mailing list