Commit 5b91ab0a authored by Will Deacon's avatar Will Deacon

Merge branch 'clocks/broadcast-arm' of git://linux-arm.org/linux-mr into for-rmk/broadcast

parents d954896e 3d06770e
...@@ -4,6 +4,7 @@ config ARM ...@@ -4,6 +4,7 @@ config ARM
select ARCH_BINFMT_ELF_RANDOMIZE_PIE select ARCH_BINFMT_ELF_RANDOMIZE_PIE
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
select ARCH_HAVE_CUSTOM_GPIO_H select ARCH_HAVE_CUSTOM_GPIO_H
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select BUILDTIME_EXTABLE_SORT if MMU select BUILDTIME_EXTABLE_SORT if MMU
select CPU_PM if (SUSPEND || CPU_IDLE) select CPU_PM if (SUSPEND || CPU_IDLE)
......
...@@ -475,14 +475,8 @@ u64 smp_irq_stat_cpu(unsigned int cpu) ...@@ -475,14 +475,8 @@ u64 smp_irq_stat_cpu(unsigned int cpu)
*/ */
static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent); static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent);
static void ipi_timer(void)
{
struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
evt->event_handler(evt);
}
#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
static void smp_timer_broadcast(const struct cpumask *mask) void tick_broadcast(const struct cpumask *mask)
{ {
smp_cross_call(mask, IPI_TIMER); smp_cross_call(mask, IPI_TIMER);
} }
...@@ -530,7 +524,6 @@ static void __cpuinit percpu_timer_setup(void) ...@@ -530,7 +524,6 @@ static void __cpuinit percpu_timer_setup(void)
struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
evt->cpumask = cpumask_of(cpu); evt->cpumask = cpumask_of(cpu);
evt->broadcast = smp_timer_broadcast;
if (!lt_ops || lt_ops->setup(evt)) if (!lt_ops || lt_ops->setup(evt))
broadcast_timer_setup(evt); broadcast_timer_setup(evt);
...@@ -596,11 +589,13 @@ void handle_IPI(int ipinr, struct pt_regs *regs) ...@@ -596,11 +589,13 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
case IPI_WAKEUP: case IPI_WAKEUP:
break; break;
#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
case IPI_TIMER: case IPI_TIMER:
irq_enter(); irq_enter();
ipi_timer(); tick_receive_broadcast();
irq_exit(); irq_exit();
break; break;
#endif
case IPI_RESCHEDULE: case IPI_RESCHEDULE:
scheduler_ipi(); scheduler_ipi();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment