On Thu, Apr 13, 2017 at 05:25:56PM +0100, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Move the BUILD_BUG_ONs for busy-wait duration outside the > _wait_for_atomic macro as discussed on the mailing list. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > Suggested-by: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx> > Fixes: 1d1a9774e404 ("drm/i915: Extend intel_wait_for_register_fw() with fast timeout") > Cc: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_drv.h | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index f78d7c5f3805..4363852f8500 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -88,7 +88,6 @@ > int cpu, ret, timeout = (US) * 1000; \ > u64 base; \ > _WAIT_FOR_ATOMIC_CHECK(ATOMIC); \ > - BUILD_BUG_ON((US) > 50000); \ > if (!(ATOMIC)) { \ > preempt_disable(); \ > cpu = smp_processor_id(); \ > @@ -130,8 +129,16 @@ > ret__; \ > }) > > -#define wait_for_atomic(COND, MS) _wait_for_atomic((COND), (MS) * 1000, 1) > -#define wait_for_atomic_us(COND, US) _wait_for_atomic((COND), (US), 1) > +#define wait_for_atomic_us(COND, US) \ > +({ \ > + int ret__; \ > + BUILD_BUG_ON(!__builtin_constant_p(US)); \ > + BUILD_BUG_ON((US) > 50000); \ > + ret__ = _wait_for_atomic((COND), (US), 1); \ > + ret__; \ > +}) Do we need ret__ here? Doesn't _wait_for_atomic() act as the expression providing the value to the caller? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx