[PATCH] cs5535-clockevt: don't ignore MFGPT on SMP-capable kernels

Andres Salomon dilinger at queued.net
Wed Jan 11 05:10:22 EST 2012


On Wed, 21 Dec 2011 16:42:20 +0100
Jens Rottmann <JRottmann at LiPPERTEmbedded.de> wrote:

> cs5535-clockevt: don't ignore MFGPT on SMP-capable kernels
> 
> On SMP-capable kernels (e.g. generic distro kernel) the
> cs5535-clockevt driver loads but is not actually used.
> 
> Setting cpumask to cpu_all_mask works for UP-only kernels, but if
> compiled for SMP - though still running on the same UP hardware -
> kernel/time/tick-common.c:tick_check_new_device() reads this as
> "non-cpu-local" and silently ignores the device.
> 
> If we leave cpumask unset clockevents_register_device() will
> initialize it and the cs5535-clockevt driver will be used no matter
> how the kernel was compiled. Should anyone ever manage to stick a
> CS553x in an SMP system (is this even possible?) then a warning will
> be printed.  This is fine as the cs5535-clockevt driver was never
> written/tested for SMP.
> 
> If bisecting led you here this patch may have exposed a pre-existing
> MFGPT problem.  Configure for UP-only and re-check.
> 
> Signed-off-by: Jens Rottmann <JRottmann at LiPPERTEmbedded.de>
> ---
> 
> --- linux-3.2-rc6/drivers/clocksource/cs5535-clockevt.c
> +++ use_mfgpt_on_smp_kernels/drivers/clocksource/cs5535-clockevt.c
> @@ -100,7 +100,6 @@ static struct clock_event_device cs5535_
>  	.set_mode = mfgpt_set_mode,
>  	.set_next_event = mfgpt_next_event,
>  	.rating = 250,
> -	.cpumask = cpu_all_mask,
>  	.shift = 32
>  };
> 
> _
> 

Hm, have you tried setting cpumask to cpumask_of(0), like a bunch of
the other clock_event_device drivers do?




More information about the Linux-geode mailing list