On 10/10/2023 08:02, Jonathan Cavitt wrote:
For the gt_tlb live selftest, when operating on the GSC engine,
increase the timeout from 10 ms to 200 ms because the GSC
engine is a bit slower than the rest.
Additionally, increase the default timeout from 10 ms to 20 ms
because msleep < 20ms can sleep for up to 20ms.
I'm not seeing why that is a reason to make it always sleep for 20ms.
msleep is not guaranteed to have any kind of high accuracy. It just
vaguely guarantees to sleep for at least the time requested. The point
of warning if used for small values is to check against the case where a
larger sleep is a problem. E.g. if you must sleep for at least 1ms but
no more than 5ms then you need to use a different function because
msleep might violate that requirement. But if your requirement is simply
to sleep for at least 10ms and who cares if it is longer (as
demonstrated by the bump to 200ms for GSC), then it is fine to use
msleep(10). Maybe it will waste time and sleep for 20ms, maybe it won't.
But it's not a problem if it does. And if it doesn't then you haven't
wasted the time.
John.
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@xxxxxxxxx>
---
drivers/gpu/drm/i915/gt/selftest_tlb.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/selftest_tlb.c b/drivers/gpu/drm/i915/gt/selftest_tlb.c
index 7e41f69fc818f..24beb94aa7a37 100644
--- a/drivers/gpu/drm/i915/gt/selftest_tlb.c
+++ b/drivers/gpu/drm/i915/gt/selftest_tlb.c
@@ -136,8 +136,15 @@ pte_tlbinv(struct intel_context *ce,
i915_request_get(rq);
i915_request_add(rq);
- /* Short sleep to sanitycheck the batch is spinning before we begin */
- msleep(10);
+ /*
+ * Short sleep to sanitycheck the batch is spinning before we begin.
+ * FIXME: Why is GSC so slow?
+ */
+ if (ce->engine->class == OTHER_CLASS)
+ msleep(200);
+ else
+ msleep(20);
+
if (va == vb) {
if (!i915_request_completed(rq)) {
pr_err("%s(%s): Semaphore sanitycheck failed %llx, with alignment %llx, using PTE size %x (phys %x, sg %x)\n",