Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Wajdeczko <michal.wajdeczko@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Subject: [PATCH v2 6/6] drm/xe/guc: Allow second H2G retry on FLR
Date: Tue, 27 Jan 2026 20:37:26 +0100	[thread overview]
Message-ID: <20260127193727.601-7-michal.wajdeczko@intel.com> (raw)
In-Reply-To: <20260127193727.601-1-michal.wajdeczko@intel.com>

During VF FLR the scratch registers could be cleared both by the
GuC and by the PF driver. Allow to retry more times once we find
out that the HXG header was cleared and wait at least 256ms before
resending the same message again to the GuC.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
v2: rebased
---
 drivers/gpu/drm/xe/xe_guc.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 231844bce1e0..70ce1d7aec21 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1389,6 +1389,9 @@ int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr)
 	return xe_guc_ct_send_block(&guc->ct, action, ARRAY_SIZE(action));
 }
 
+#define MAX_RETRIES_ON_FLR	2
+#define MIN_SLEEP_MS_ON_FLR	256
+
 int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
 			  u32 len, u32 *response_buf)
 {
@@ -1399,7 +1402,7 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
 		MED_VF_SW_FLAG(0) : VF_SW_FLAG(0);
 	const u32 LAST_INDEX = VF_SW_FLAG_COUNT - 1;
 	unsigned int sleep_period_ms = 1;
-	bool lost = false;
+	unsigned int lost = 0;
 	u32 header;
 	int ret;
 	int i;
@@ -1435,9 +1438,14 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
 			     50000, &header, false);
 	if (ret) {
 		/* scratch registers might be cleared during FLR, try once more */
-		if (!header && !lost) {
+		if (!header) {
+			if (++lost > MAX_RETRIES_ON_FLR) {
+				xe_gt_err(gt, "GuC mmio request %#x: lost, too many retries %u\n",
+					  request[0], lost);
+				return -ENOLINK;
+			}
 			xe_gt_dbg(gt, "GuC mmio request %#x: lost, trying again\n", request[0]);
-			lost = true;
+			xe_sleep_relaxed_ms(MIN_SLEEP_MS_ON_FLR);
 			goto retry;
 		}
 timeout:
-- 
2.47.1


  parent reply	other threads:[~2026-01-27 19:37 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-27 19:37 [PATCH v2 0/6] drm/xe/guc: Make MMIO communication more robust Michal Wajdeczko
2026-01-27 19:37 ` [PATCH v2 1/6] drm/xe: Promote relaxed_ms_sleep Michal Wajdeczko
2026-01-27 19:46   ` Matthew Brost
2026-01-27 19:37 ` [PATCH v2 2/6] drm/xe: Move exponential sleep logic to helper Michal Wajdeczko
2026-01-27 19:49   ` Matthew Brost
2026-01-27 19:37 ` [PATCH v2 3/6] drm/xe/guc: Limit sleep while waiting for H2G credits Michal Wajdeczko
2026-01-27 19:51   ` Matthew Brost
2026-01-27 19:37 ` [PATCH v2 4/6] drm/xe/guc: Drop redundant register read Michal Wajdeczko
2026-01-27 19:37 ` [PATCH v2 5/6] drm/xe/guc: Wait before retrying sending H2G Michal Wajdeczko
2026-01-27 19:56   ` Matthew Brost
2026-01-27 19:37 ` Michal Wajdeczko [this message]
2026-01-27 19:57   ` [PATCH v2 6/6] drm/xe/guc: Allow second H2G retry on FLR Matthew Brost
2026-01-27 19:47 ` ✗ CI.checkpatch: warning for drm/xe/guc: Make MMIO communication more robust (rev2) Patchwork
2026-01-27 19:48 ` ✓ CI.KUnit: success " Patchwork
2026-01-27 20:21 ` ✓ Xe.CI.BAT: " Patchwork
2026-01-28  2:54 ` ✗ Xe.CI.Full: failure " Patchwork
2026-01-29 18:57   ` Michal Wajdeczko
2026-02-02 21:34     ` Michal Wajdeczko
2026-01-29 20:23 ` ✗ CI.checkpatch: warning for drm/xe/guc: Make MMIO communication more robust (rev3) Patchwork
2026-01-29 20:25 ` ✓ CI.KUnit: success " Patchwork
2026-01-29 21:01 ` ✓ Xe.CI.BAT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260127193727.601-7-michal.wajdeczko@intel.com \
    --to=michal.wajdeczko@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox