Quoting Sagar Arun Kamble (2018-04-20 11:23:50) > > > On 4/20/2018 3:24 PM, Mika Kuoppala wrote: > > We use jiffies to determine when wait expires. However > > Imre did find out that jiffies can and will do a >1 > > increments on certain situations [1]. When this happens > > in a wait_for loop, we return timeout errorneously > > much earlier than what the real wallclock would say. > > > > We can't afford our waits to timeout prematurely. > > Discard jiffies and change to ktime to detect timeouts. > > > > Reported-by: Imre Deak <imre.deak@xxxxxxxxx> > > References: https://lkml.org/lkml/2018/4/18/798 [1] > > Cc: Imre Deak <imre.deak@xxxxxxxxx> > > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Signed-off-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_drv.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > > index 8b20824e806e..ac7565220aa3 100644 > > --- a/drivers/gpu/drm/i915/intel_drv.h > > +++ b/drivers/gpu/drm/i915/intel_drv.h > > @@ -49,12 +49,12 @@ > > * check the condition before the timeout. > > */ > > #define __wait_for(OP, COND, US, Wmin, Wmax) ({ \ > > - unsigned long timeout__ = jiffies + usecs_to_jiffies(US) + 1; \ > > + const ktime_t end__ = ktime_add_ns(ktime_get_raw(), 1000ll * (US)); \ > Is ktime_get_raw() monotonic? Thomas suggested ktime_get() It proclaims to be monotonic, without the clock drift calibration. For the milliseconds we should be sleeping at most, I hope that is immaterial. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx