Message ID | 20200317163208.30010-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/gt: Always reschedule the new heartbeat | expand |
On 17/03/2020 16:32, Chris Wilson wrote: > In order to better respond to new heartbeat intervals given via sysfs, > always reprogramme an active heartbeat upon change (i.e. use > mod_delayed_work to reschedule rather than queue_delayed_work which > ignores an already active work.) > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > index dd825718e4e5..5136c8bf112d 100644 > --- a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > +++ b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > @@ -31,7 +31,7 @@ static bool next_heartbeat(struct intel_engine_cs *engine) > delay = msecs_to_jiffies_timeout(delay); > if (delay >= HZ) > delay = round_jiffies_up_relative(delay); > - schedule_delayed_work(&engine->heartbeat.work, delay); > + mod_delayed_work(system_wq, &engine->heartbeat.work, delay); > > return true; > } > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> What about the transition from disabled (or long) preempt timeout to a normal one? Regards, Tvrtko
Quoting Tvrtko Ursulin (2020-03-17 16:50:02) > > On 17/03/2020 16:32, Chris Wilson wrote: > > In order to better respond to new heartbeat intervals given via sysfs, > > always reprogramme an active heartbeat upon change (i.e. use > > mod_delayed_work to reschedule rather than queue_delayed_work which > > ignores an already active work.) > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > --- > > drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > > index dd825718e4e5..5136c8bf112d 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > > +++ b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > > @@ -31,7 +31,7 @@ static bool next_heartbeat(struct intel_engine_cs *engine) > > delay = msecs_to_jiffies_timeout(delay); > > if (delay >= HZ) > > delay = round_jiffies_up_relative(delay); > > - schedule_delayed_work(&engine->heartbeat.work, delay); > > + mod_delayed_work(system_wq, &engine->heartbeat.work, delay); > > > > return true; > > } > > > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > What about the transition from disabled (or long) preempt timeout to a > normal one? They all use next_heartbeat() (from calling intel_engine_unpark_heartbeat) to reschedule if going to an active heartbeat. On disable, we call intel_engine_park_heartbeat() which does the cancel_delayed_work. -Chris
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c index dd825718e4e5..5136c8bf112d 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c @@ -31,7 +31,7 @@ static bool next_heartbeat(struct intel_engine_cs *engine) delay = msecs_to_jiffies_timeout(delay); if (delay >= HZ) delay = round_jiffies_up_relative(delay); - schedule_delayed_work(&engine->heartbeat.work, delay); + mod_delayed_work(system_wq, &engine->heartbeat.work, delay); return true; }
In order to better respond to new heartbeat intervals given via sysfs, always reprogramme an active heartbeat upon change (i.e. use mod_delayed_work to reschedule rather than queue_delayed_work which ignores an already active work.) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)