Re: [PATCH 3/3] clocksource: pxa: Fix section mismatch

Ingo Molnar
2015-02-25T10:59:10Z

* Daniel Lezcano <daniel.lezcano@linaro.org> wrote:

> On 02/25/2015 11:48 AM, Ingo Molnar wrote:
> >
> >* Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
> >
> >>On 02/25/2015 11:35 AM, Ingo Molnar wrote:
> >>>
> >>>* Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
> >>>
> >>>>From: Robert Jarzmik <robert.jarzmik@free.fr>
> >>>>
> >>>>As pxa_timer_common_init() is only called in init context, mark it as
> >>>>such, and quiesce the compiler warnings :
> >>>>WARNING: vmlinux.o(.text.unlikely+0x45d4): Section mismatch in reference
> >>>>from the function pxa_timer_common_init() to the function
> >>>>.init.text:sched_clock_register()
> >>>>
> >>>>WARNING: vmlinux.o(.text.unlikely+0x4610): Section mismatch in reference
> >>>>from the function pxa_timer_common_init() to the function
> >>>>.init.text:clocksource_mmio_init()
> >>>>
> >>>>Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
> >>>>Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> >>>>---
> >>>> drivers/clocksource/pxa_timer.c | 2 +-
> >>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>>diff --git a/drivers/clocksource/pxa_timer.c b/drivers/clocksource/pxa_timer.c
> >>>>index 941f3f3..d9438af 100644
> >>>>--- a/drivers/clocksource/pxa_timer.c
> >>>>+++ b/drivers/clocksource/pxa_timer.c
> >>>>@@ -163,7 +163,7 @@ static struct irqaction pxa_ost0_irq = {
> >>>> .dev_id = &ckevt_pxa_osmr0,
> >>>> };
> >>>>
> >>>>-static void pxa_timer_common_init(int irq, unsigned long clock_tick_rate)
> >>>>+static void __init pxa_timer_common_init(int irq, unsigned long clock_tick_rate)
> >>>> {
> >>>> timer_writel(0, OIER);
> >>>> timer_writel(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
> >>>
> >>>So this is then used indirectly by:
> >>>
> >>>CLOCKSOURCE_OF_DECLARE(pxa_timer, "marvell,pxa-timer", pxa_timer_dt_init);
> >>>
> >>>which should probably be marked __initdata?
> >>
> >>
> >>Sorry, I miss the point. What should be marked __initdata ?
> >
> >so CLOCKSOURCE_OF_DECLARE() defines 'struct of_device_id'
> >entries, right? Those, if they are only used during
> >initialization, should be marked __initdata.
> >
> >Or are they mixed use?
>
> Ah, ok. Thanks for the clarification. I thought there was
> an issue with the patch and I was hanging the PR.

No, the patch is fine I think, I was just double checking
it and noticed that nobody really marks
CLOCKSOURCE_OF_DECLARE() as __initdata in practice.

> Let me look in details.

might not be worth doing, and it will quickly bitrot
anyway, as new drivers might not pick it up.

Plus, should that structure ever get modularized, it will
have to be removed again.

Thanks,

Ingo