[PATCH 3/3] mach-u300: cleanup clockevent code
Thomas Gleixner
tglx at linutronix.de
Thu Jun 2 05:35:26 EDT 2011
On Wed, 1 Jun 2011, Stephen Boyd wrote:
> On 06/01/2011 03:03 AM, Thomas Gleixner wrote:
> > Something like the below should work for both UP and SMP
> >
> > diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
> > index c027d4f..739801b 100644
> > --- a/kernel/time/clockevents.c
> > +++ b/kernel/time/clockevents.c
> > @@ -173,6 +173,12 @@ static void clockevents_notify_released(void)
> > }
> > }
> >
> > +#ifdef CONFIG_SMP
> > +# define CPU_MASK_CHECK(x) WARN_ON(!x)
> > +#else
> > +# define CPU_MASK_CHECK(x) (!x)
> > +#endif
> > +
> > /**
> > * clockevents_register_device - register a clock event device
> > * @dev: device to register
> > @@ -182,7 +188,8 @@ void clockevents_register_device(struct clock_event_device *dev)
> > unsigned long flags;
> >
> > BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED);
> > - BUG_ON(!dev->cpumask);
> > + if (CPU_MASK_CHECK(dev->cpumask))
> > + dev->cpumask = cpumask_of(smp_processor_id());
> >
> > raw_spin_lock_irqsave(&clockevents_lock, flags);
>
> Won't this print a big WARNING on SMP_ON_UP=y and is_smp() == false
> kernels? Is there a generic cross-architecture way to check for SMP at
Need to check that.
> runtime?
>
> Also, I don't understand the original motivation for this change. The
> assignment to cpumask was there in the u300 timer code already so the
> commit text from Linus is a bit misleading/confusing.
The point is that we can remove these assignements for UP all over the
place and just do it in the core code.
More information about the linux-arm-kernel
mailing list