OSDN Git Service

clocksource: mips-gic: Use percpu_dev_id
authorAndrew Bresticker <abrestic@chromium.org>
Mon, 20 Oct 2014 19:04:03 +0000 (12:04 -0700)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 24 Nov 2014 06:45:15 +0000 (07:45 +0100)
Since the GIC timer IRQ is a percpu IRQ, we can use percpu_dev_id
to pass the IRQ handler the correct clock_event_device.

Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Qais Yousef <qais.yousef@imgtec.com>
Cc: John Crispin <blogic@openwrt.org>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8138/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/clocksource/mips-gic-timer.c

index 763aa1c..05bdfe1 100644 (file)
@@ -39,17 +39,16 @@ static void gic_set_clock_mode(enum clock_event_mode mode,
 
 static irqreturn_t gic_compare_interrupt(int irq, void *dev_id)
 {
-       struct clock_event_device *cd;
-       int cpu = smp_processor_id();
+       struct clock_event_device *cd = dev_id;
 
        gic_write_compare(gic_read_compare());
-       cd = &per_cpu(gic_clockevent_device, cpu);
        cd->event_handler(cd);
        return IRQ_HANDLED;
 }
 
 struct irqaction gic_compare_irqaction = {
        .handler = gic_compare_interrupt,
+       .percpu_dev_id = &gic_clockevent_device,
        .flags = IRQF_PERCPU | IRQF_TIMER,
        .name = "timer",
 };