All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] drm/xe: Change pcode timeout to 50msec while polling again
@ 2024-05-08  3:43 Himal Prasad Ghimiray
  2024-05-08  3:34 ` ✓ CI.Patch_applied: success for drm/xe: Change pcode timeout to 50msec while polling again (rev2) Patchwork
                   ` (8 more replies)
  0 siblings, 9 replies; 12+ messages in thread
From: Himal Prasad Ghimiray @ 2024-05-08  3:43 UTC (permalink / raw)
  To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi

Polling is initially attempted with timeout_base_ms enabled for
preemption, and if it exceeds this timeframe, another attempt is made
without preemption, allowing an additional 50 ms before timing out.

Display driver can request for timeout of 3 msec, hence modify the
warning condition.

v2
- Rebase

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/xe/xe_pcode.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
index c010ef16fbf5..2771eed1e45f 100644
--- a/drivers/gpu/drm/xe/xe_pcode.c
+++ b/drivers/gpu/drm/xe/xe_pcode.c
@@ -10,6 +10,7 @@
 
 #include <drm/drm_managed.h>
 
+#include "xe_assert.h"
 #include "xe_device.h"
 #include "xe_gt.h"
 #include "xe_mmio.h"
@@ -124,6 +125,8 @@ static int pcode_try_request(struct xe_gt *gt, u32 mbox,
 {
 	int slept, wait = 10;
 
+	xe_gt_assert(gt, timeout_us > 0);
+
 	for (slept = 0; slept < timeout_us; slept += wait) {
 		if (locked)
 			*status = pcode_mailbox_rw(gt, mbox, &request, NULL, 1, true,
@@ -166,7 +169,7 @@ static int pcode_try_request(struct xe_gt *gt, u32 mbox,
 int xe_pcode_request(struct xe_gt *gt, u32 mbox, u32 request,
 		      u32 reply_mask, u32 reply, int timeout_base_ms)
 {
-	u32 status;
+	u32 status = 0;
 	int ret;
 
 	mutex_lock(&gt->pcode.lock);
@@ -188,10 +191,10 @@ int xe_pcode_request(struct xe_gt *gt, u32 mbox, u32 request,
 	 */
 	drm_err(&gt_to_xe(gt)->drm,
 		"PCODE timeout, retrying with preemption disabled\n");
-	drm_WARN_ON_ONCE(&gt_to_xe(gt)->drm, timeout_base_ms > 1);
+	drm_WARN_ON_ONCE(&gt_to_xe(gt)->drm, timeout_base_ms > 3);
 	preempt_disable();
 	ret = pcode_try_request(gt, mbox, request, reply_mask, reply, &status,
-				true, timeout_base_ms * 1000, true);
+				true, 50 * 1000, true);
 	preempt_enable();
 
 out:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-05-08 16:13 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-08  3:43 [PATCH v2] drm/xe: Change pcode timeout to 50msec while polling again Himal Prasad Ghimiray
2024-05-08  3:34 ` ✓ CI.Patch_applied: success for drm/xe: Change pcode timeout to 50msec while polling again (rev2) Patchwork
2024-05-08  3:35 ` ✓ CI.checkpatch: " Patchwork
2024-05-08  3:36 ` ✓ CI.KUnit: " Patchwork
2024-05-08  3:52 ` ✓ CI.Build: " Patchwork
2024-05-08  3:55 ` ✓ CI.Hooks: " Patchwork
2024-05-08  4:29 ` ✓ CI.BAT: " Patchwork
2024-05-08 12:12 ` [PATCH v2] drm/xe: Change pcode timeout to 50msec while polling again Rodrigo Vivi
2024-05-08 12:55 ` Lucas De Marchi
2024-05-08 12:59   ` Rodrigo Vivi
2024-05-08 13:53     ` Ghimiray, Himal Prasad
2024-05-08 16:13 ` ✗ CI.FULL: failure for drm/xe: Change pcode timeout to 50msec while polling again (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.