]> www.infradead.org Git - linux.git/commitdiff
drm/xe: Enlarge the invalidation timeout from 150 to 500
authorShuicheng Lin <shuicheng.lin@intel.com>
Tue, 15 Oct 2024 16:12:07 +0000 (16:12 +0000)
committerMatthew Auld <matthew.auld@intel.com>
Wed, 16 Oct 2024 15:11:10 +0000 (16:11 +0100)
There are error messages like below that are occurring during stress
testing: "[   31.004009] xe 0000:03:00.0: [drm] ERROR GT0: Global
invalidation timeout". Previously it was hitting this 3 out of 1000
executions of warm reboot.  After raising it to 500, 1000 warm reboot
executions passed and it didn't fail.

Due to the way xe_mmio_wait32() is implemented, the timeout is able to
expire early when the register matches the expected value due to the
wait increments starting small. So, the larger timeout value should have
no effect during normal use cases.

v2 (Jonathan):
  - rework the commit message
v3 (Lucas):
  - add conclusive message for the fail rate and test case
v4:
  - add suggested-by

Suggested-by: Jia Yao <jia.yao@intel.com>
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Tested-by: Zongyao Bai <zongyao.bai@intel.com>
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241015161207.1373401-1-shuicheng.lin@intel.com
drivers/gpu/drm/xe/xe_device.c

index 962751c966d16e4cf026b3f94caf92c3d22ad97f..22b572f0612c9179e7d7a89b9e01159f913f2d58 100644 (file)
@@ -925,7 +925,7 @@ void xe_device_l2_flush(struct xe_device *xe)
        spin_lock(&gt->global_invl_lock);
        xe_mmio_write32(&gt->mmio, XE2_GLOBAL_INVAL, 0x1);
 
-       if (xe_mmio_wait32(&gt->mmio, XE2_GLOBAL_INVAL, 0x1, 0x0, 150, NULL, true))
+       if (xe_mmio_wait32(&gt->mmio, XE2_GLOBAL_INVAL, 0x1, 0x0, 500, NULL, true))
                xe_gt_err_once(gt, "Global invalidation timeout\n");
        spin_unlock(&gt->global_invl_lock);