Re: [PATCH v1 06/10] clocksource: Remove "weak" from clocksource_default_clock() declaration

Bjorn Helgaas
2014-10-16T13:40:16Z

On Thu, Oct 16, 2014 at 1:22 AM, Martin Schwidefsky
<schwidefsky@de.ibm.com> wrote:
> On Wed, 15 Oct 2014 17:30:33 -0600
> Bjorn Helgaas <bhelgaas@google.com> wrote:
>
>> [+cc Daniel, Martin, linux-s390; sorry, I botched my "stg mail" so you
>> weren't included the first time. s390 could see issues from this.]
>>
>> On Wed, Oct 15, 2014 at 11:06 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
>> > kernel/time/jiffies.c provides a default clocksource_default_clock()
>> > definition explicitly marked "weak". arch/s390 provides its own definition
>> > intended to override the default, but the "weak" attribute on the
>> > declaration applied to the s390 definition as well, so the linker chose one
>> > based on link order (see 10629d711ed7 ("PCI: Remove __weak annotation from
>> > pcibios_get_phb_of_node decl")).
>> >
>> > Remove the "weak" attribute from the clocksource_default_clock()
>> > declaration so we always prefer a non-weak definition over the weak one,
>> > independent of link order.
>> >
>> > Fixes: f1b82746c1e9 ("clocksource: Cleanup clocksource selection")
>> > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>> > CC: Daniel Lezcano <daniel.lezcano@linaro.org>
>> > CC: Martin Schwidefsky <schwidefsky@de.ibm.com>
>> > ---
>> > include/linux/clocksource.h | 2 +-
>> > 1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
>> > index 653f0e2b6ca9..abcafaa20b86 100644
>> > --- a/include/linux/clocksource.h
>> > +++ b/include/linux/clocksource.h
>> > @@ -287,7 +287,7 @@ extern struct clocksource* clocksource_get_next(void);
>> > extern void clocksource_change_rating(struct clocksource *cs, int rating);
>> > extern void clocksource_suspend(void);
>> > extern void clocksource_resume(void);
>> > -extern struct clocksource * __init __weak clocksource_default_clock(void);
>> > +extern struct clocksource * __init clocksource_default_clock(void);
>> > extern void clocksource_mark_unstable(struct clocksource *cs);
>> >
>> > extern u64
>> >
>
> s390 compiles and boots without the __weak for clocksource_default_clock.

I assume this means you've tested this patch and s390 compiles and boots?

I assume you *don't* mean that s390 could drop its
clocksource_default_clock() implementation and use the generic one,
right?

Bjorn