Messages in this thread | | | Date | Fri, 29 Nov 2013 12:58:48 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [PATCH V4 6/9] cpuidle/ppc: Add basic infrastructure to enable the broadcast framework on ppc |
| |
On Fri, 29 Nov 2013, Preeti U Murthy wrote: > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index b44b52c..cafa788 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -129,6 +129,8 @@ config PPC > select GENERIC_CMOS_UPDATE > select GENERIC_TIME_VSYSCALL_OLD > select GENERIC_CLOCKEVENTS > + select GENERIC_CLOCKEVENTS_BROADCAST > + select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
What's the point of this config switch? It's nowhere used.
> +static int broadcast_set_next_event(unsigned long evt, > + struct clock_event_device *dev) > +{ > + return 0; > +} > + > +static void broadcast_set_mode(enum clock_event_mode mode, > + struct clock_event_device *dev) > +{ > + if (mode != CLOCK_EVT_MODE_ONESHOT) > + broadcast_set_next_event(DECREMENTER_MAX, dev);
What's the point of calling an empty function?
> +} > + > static void decrementer_set_mode(enum clock_event_mode mode, > struct clock_event_device *dev) > { > @@ -840,6 +869,19 @@ static void register_decrementer_clockevent(int cpu) > clockevents_register_device(dec); > } > > +static void register_broadcast_clockevent(int cpu) > +{ > + struct clock_event_device *bc_evt = &bc_timer; > + > + *bc_evt = broadcast_clockevent; > + bc_evt->cpumask = cpu_possible_mask; > + > + printk_once(KERN_DEBUG "clockevent: %s mult[%x] shift[%d] cpu[%d]\n", > + bc_evt->name, bc_evt->mult, bc_evt->shift, cpu); > + > + clockevents_register_device(bc_evt); > +} > + > static void __init init_decrementer_clockevent(void) > { > int cpu = smp_processor_id(); > @@ -854,6 +896,19 @@ static void __init init_decrementer_clockevent(void) > register_decrementer_clockevent(cpu); > } > > +static void __init init_broadcast_clockevent(void) > +{ > + int cpu = smp_processor_id(); > + > + clockevents_calc_mult_shift(&broadcast_clockevent, ppc_tb_freq, 4); > + > + broadcast_clockevent.max_delta_ns = > + clockevent_delta2ns(DECREMENTER_MAX, &broadcast_clockevent); > + broadcast_clockevent.min_delta_ns = > + clockevent_delta2ns(2, &broadcast_clockevent);
clockevents_config()
Thanks,
tglx
| |