Re: [PATCH v4] clocksource:arm_global_timer: Add ARM global timersupport.

From: Thomas Gleixner
Date: Fri Jun 21 2013 - 17:00:51 EST


On Fri, 21 Jun 2013, Stephen Boyd wrote:

> On 06/21/13 08:56, Thomas Gleixner wrote:
> >
> >> +static irqreturn_t gt_clockevent_interrupt(int irq, void *dev_id)
> >> +{
> >> + struct clock_event_device *evt = *(struct clock_event_device **)dev_id;
> > What kind of construct is this?
> >
> > You are using request_percpu_irq() and the device id is pointing to
> > per cpu memory. Why do you need this horrible pointer indirection?
> >
> > Because a lot of other ARM code uses the same broken construct?
>
> This is an artifact of the ARM local timer API. I have been trying for a

No, it's not an artifact. It's a copy and paste issue. Looking at
drivers/clocksource/arm_arch_timer.c

arch_timer_evt = alloc_percpu(struct clock_event_device);
...
err = request_percpu_irq(ppi, arch_timer_handler_virt,
"arch_timer", arch_timer_evt);

This code is correct and it does not need any of the changes.

Doing it with the pointer madness is just wrong, nothing else. Even if
there is a historic reason why the pointer juggling was necessary at
some point, it's obviously not needed anymore.

And historic crap is no justification for brainlessly copied code.

Thanks,

tglx


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/