[PATCH 26/75] drm/i915/gt: Only kick the scheduler on timeslice/preemption change
Chris Wilson
chris at chris-wilson.co.uk
Tue Feb 2 11:37:43 UTC 2021
Kick the scheduler to allow it to see the timeslice duration change,
don't peek into execlists.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/gt/sysfs_engines.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/sysfs_engines.c b/drivers/gpu/drm/i915/gt/sysfs_engines.c
index 57ef5383dd4e..526f8402cfb7 100644
--- a/drivers/gpu/drm/i915/gt/sysfs_engines.c
+++ b/drivers/gpu/drm/i915/gt/sysfs_engines.c
@@ -9,6 +9,7 @@
#include "i915_drv.h"
#include "intel_engine.h"
#include "intel_engine_heartbeat.h"
+#include "intel_engine_pm.h"
#include "sysfs_engines.h"
struct kobj_engine {
@@ -222,9 +223,8 @@ timeslice_store(struct kobject *kobj, struct kobj_attribute *attr,
return -EINVAL;
WRITE_ONCE(engine->props.timeslice_duration_ms, duration);
-
- if (execlists_active(&engine->execlists))
- set_timer_ms(&engine->execlists.timer, duration);
+ if (intel_engine_pm_is_awake(engine))
+ intel_engine_kick_scheduler(engine);
return count;
}
@@ -326,9 +326,8 @@ preempt_timeout_store(struct kobject *kobj, struct kobj_attribute *attr,
return -EINVAL;
WRITE_ONCE(engine->props.preempt_timeout_ms, timeout);
-
- if (READ_ONCE(engine->execlists.pending[0]))
- set_timer_ms(&engine->execlists.preempt, timeout);
+ if (intel_engine_pm_is_awake(engine))
+ intel_engine_kick_scheduler(engine);
return count;
}
--
2.20.1
More information about the Intel-gfx-trybot
mailing list