Message ID | 20210324090939.143477-1-heying24@huawei.com |
---|---|
State | Not Applicable |
Headers | show |
Series | [V3,-next] powerpc: kernel/time.c - cleanup warnings | expand |
On 24/03/2021 05:09:39-0400, He Ying wrote: > We found these warnings in arch/powerpc/kernel/time.c as follows: > warning: symbol 'decrementer_max' was not declared. Should it be static? > warning: symbol 'rtc_lock' was not declared. Should it be static? > warning: symbol 'dtl_consumer' was not declared. Should it be static? > > Declare 'decrementer_max' in powerpc asm/time.h. > Include linux/mc146818rtc.h in powerpc kernel/time.c where 'rtc_lock' > is declared. And remove duplicated declaration of 'rtc_lock' in powerpc > platforms/chrp/time.c because it has included linux/mc146818rtc.h. > Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it > is declared there. > > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: He Ying <heying24@huawei.com> > --- > V2: > - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare > rtc_lock in powerpc asm/time.h. > V3: > - Recover to V1, that is including linux/mc146818rtc.h in powerpc > kernel/time.c. And remove duplicated declaration of 'rtc_lock' in powerpc > platforms/chrp/time.c because it has included linux/mc146818rtc.h. > > arch/powerpc/include/asm/time.h | 1 + > arch/powerpc/kernel/time.c | 9 ++++----- > arch/powerpc/platforms/chrp/time.c | 2 -- > 3 files changed, 5 insertions(+), 7 deletions(-) > > diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h > index 8dd3cdb25338..2cd2b50bedda 100644 > --- a/arch/powerpc/include/asm/time.h > +++ b/arch/powerpc/include/asm/time.h > @@ -22,6 +22,7 @@ extern unsigned long tb_ticks_per_jiffy; > extern unsigned long tb_ticks_per_usec; > extern unsigned long tb_ticks_per_sec; > extern struct clock_event_device decrementer_clockevent; > +extern u64 decrementer_max; > > > extern void generic_calibrate_decr(void); > diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c > index b67d93a609a2..ac81f043bf49 100644 > --- a/arch/powerpc/kernel/time.c > +++ b/arch/powerpc/kernel/time.c > @@ -55,8 +55,9 @@ > #include <linux/sched/cputime.h> > #include <linux/sched/clock.h> > #include <linux/processor.h> > -#include <asm/trace.h> > +#include <linux/mc146818rtc.h> I'm fine with that but I really think my suggestion to make the rtc_lock local to the platforms was better because it is only used to synchronize between concurrent invocations of chrp_set_rtc_time or maple_set_rtc_time. The rtc core will never do that and the only case would be concurrent calls to rtc_ops.set_time and update_persistent_clock64 (which should also be removed at some point). > > +#include <asm/trace.h> > #include <asm/interrupt.h> > #include <asm/io.h> > #include <asm/nvram.h> > @@ -150,10 +151,6 @@ bool tb_invalid; > u64 __cputime_usec_factor; > EXPORT_SYMBOL(__cputime_usec_factor); > > -#ifdef CONFIG_PPC_SPLPAR > -void (*dtl_consumer)(struct dtl_entry *, u64); > -#endif > - > static void calc_cputime_factors(void) > { > struct div_result res; > @@ -179,6 +176,8 @@ static inline unsigned long read_spurr(unsigned long tb) > > #include <asm/dtl.h> > > +void (*dtl_consumer)(struct dtl_entry *, u64); > + > /* > * Scan the dispatch trace log and count up the stolen time. > * Should be called with interrupts disabled. > diff --git a/arch/powerpc/platforms/chrp/time.c b/arch/powerpc/platforms/chrp/time.c > index acde7bbe0716..b94dfd5090d8 100644 > --- a/arch/powerpc/platforms/chrp/time.c > +++ b/arch/powerpc/platforms/chrp/time.c > @@ -30,8 +30,6 @@ > > #include <platforms/chrp/chrp.h> > > -extern spinlock_t rtc_lock; > - > #define NVRAM_AS0 0x74 > #define NVRAM_AS1 0x75 > #define NVRAM_DATA 0x77 > -- > 2.17.1 >
Le 24/03/2021 à 10:09, He Ying a écrit : > We found these warnings in arch/powerpc/kernel/time.c as follows: > warning: symbol 'decrementer_max' was not declared. Should it be static? > warning: symbol 'rtc_lock' was not declared. Should it be static? > warning: symbol 'dtl_consumer' was not declared. Should it be static? > > Declare 'decrementer_max' in powerpc asm/time.h. > Include linux/mc146818rtc.h in powerpc kernel/time.c where 'rtc_lock' > is declared. And remove duplicated declaration of 'rtc_lock' in powerpc > platforms/chrp/time.c because it has included linux/mc146818rtc.h. > Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it > is declared there. > > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: He Ying <heying24@huawei.com> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> > --- > V2: > - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare > rtc_lock in powerpc asm/time.h. > V3: > - Recover to V1, that is including linux/mc146818rtc.h in powerpc > kernel/time.c. And remove duplicated declaration of 'rtc_lock' in powerpc > platforms/chrp/time.c because it has included linux/mc146818rtc.h. > > arch/powerpc/include/asm/time.h | 1 + > arch/powerpc/kernel/time.c | 9 ++++----- > arch/powerpc/platforms/chrp/time.c | 2 -- > 3 files changed, 5 insertions(+), 7 deletions(-) > > diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h > index 8dd3cdb25338..2cd2b50bedda 100644 > --- a/arch/powerpc/include/asm/time.h > +++ b/arch/powerpc/include/asm/time.h > @@ -22,6 +22,7 @@ extern unsigned long tb_ticks_per_jiffy; > extern unsigned long tb_ticks_per_usec; > extern unsigned long tb_ticks_per_sec; > extern struct clock_event_device decrementer_clockevent; > +extern u64 decrementer_max; > > > extern void generic_calibrate_decr(void); > diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c > index b67d93a609a2..ac81f043bf49 100644 > --- a/arch/powerpc/kernel/time.c > +++ b/arch/powerpc/kernel/time.c > @@ -55,8 +55,9 @@ > #include <linux/sched/cputime.h> > #include <linux/sched/clock.h> > #include <linux/processor.h> > -#include <asm/trace.h> > +#include <linux/mc146818rtc.h> > > +#include <asm/trace.h> > #include <asm/interrupt.h> > #include <asm/io.h> > #include <asm/nvram.h> > @@ -150,10 +151,6 @@ bool tb_invalid; > u64 __cputime_usec_factor; > EXPORT_SYMBOL(__cputime_usec_factor); > > -#ifdef CONFIG_PPC_SPLPAR > -void (*dtl_consumer)(struct dtl_entry *, u64); > -#endif > - > static void calc_cputime_factors(void) > { > struct div_result res; > @@ -179,6 +176,8 @@ static inline unsigned long read_spurr(unsigned long tb) > > #include <asm/dtl.h> > > +void (*dtl_consumer)(struct dtl_entry *, u64); > + > /* > * Scan the dispatch trace log and count up the stolen time. > * Should be called with interrupts disabled. > diff --git a/arch/powerpc/platforms/chrp/time.c b/arch/powerpc/platforms/chrp/time.c > index acde7bbe0716..b94dfd5090d8 100644 > --- a/arch/powerpc/platforms/chrp/time.c > +++ b/arch/powerpc/platforms/chrp/time.c > @@ -30,8 +30,6 @@ > > #include <platforms/chrp/chrp.h> > > -extern spinlock_t rtc_lock; > - > #define NVRAM_AS0 0x74 > #define NVRAM_AS1 0x75 > #define NVRAM_DATA 0x77 >
Le 24/03/2021 à 10:29, Alexandre Belloni a écrit : > On 24/03/2021 05:09:39-0400, He Ying wrote: >> We found these warnings in arch/powerpc/kernel/time.c as follows: >> warning: symbol 'decrementer_max' was not declared. Should it be static? >> warning: symbol 'rtc_lock' was not declared. Should it be static? >> warning: symbol 'dtl_consumer' was not declared. Should it be static? >> >> Declare 'decrementer_max' in powerpc asm/time.h. >> Include linux/mc146818rtc.h in powerpc kernel/time.c where 'rtc_lock' >> is declared. And remove duplicated declaration of 'rtc_lock' in powerpc >> platforms/chrp/time.c because it has included linux/mc146818rtc.h. >> Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it >> is declared there. >> >> Reported-by: Hulk Robot <hulkci@huawei.com> >> Signed-off-by: He Ying <heying24@huawei.com> >> --- >> V2: >> - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare >> rtc_lock in powerpc asm/time.h. >> V3: >> - Recover to V1, that is including linux/mc146818rtc.h in powerpc >> kernel/time.c. And remove duplicated declaration of 'rtc_lock' in powerpc >> platforms/chrp/time.c because it has included linux/mc146818rtc.h. >> >> arch/powerpc/include/asm/time.h | 1 + >> arch/powerpc/kernel/time.c | 9 ++++----- >> arch/powerpc/platforms/chrp/time.c | 2 -- >> 3 files changed, 5 insertions(+), 7 deletions(-) >> >> diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h >> index 8dd3cdb25338..2cd2b50bedda 100644 >> --- a/arch/powerpc/include/asm/time.h >> +++ b/arch/powerpc/include/asm/time.h >> @@ -22,6 +22,7 @@ extern unsigned long tb_ticks_per_jiffy; >> extern unsigned long tb_ticks_per_usec; >> extern unsigned long tb_ticks_per_sec; >> extern struct clock_event_device decrementer_clockevent; >> +extern u64 decrementer_max; >> >> >> extern void generic_calibrate_decr(void); >> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c >> index b67d93a609a2..ac81f043bf49 100644 >> --- a/arch/powerpc/kernel/time.c >> +++ b/arch/powerpc/kernel/time.c >> @@ -55,8 +55,9 @@ >> #include <linux/sched/cputime.h> >> #include <linux/sched/clock.h> >> #include <linux/processor.h> >> -#include <asm/trace.h> >> +#include <linux/mc146818rtc.h> > > I'm fine with that but I really think my suggestion to make the rtc_lock > local to the platforms was better because it is only used to synchronize > between concurrent invocations of chrp_set_rtc_time or > maple_set_rtc_time. The rtc core will never do that and the only case > would be concurrent calls to rtc_ops.set_time and > update_persistent_clock64 (which should also be removed at some point). I agree but I think it must be done carefully. If the lock is local to the driver really and without a link with the RTC core, then the lock var should probably be static. But then we'll have name conflict with the global rtc_lock which is declared in <linux/mc146818rtc.h> All this is not easy, and I like your idea in the other mail to really clean up the rtc core and remove this global rtc_lock completely. For the time being I guess the fix provided by this patch is just semantic and is just fine as is, as there is no real bug behind the messages from sparse. Christophe
Dear Alexandre, 在 2021/3/24 17:29, Alexandre Belloni 写道: > On 24/03/2021 05:09:39-0400, He Ying wrote: >> We found these warnings in arch/powerpc/kernel/time.c as follows: >> warning: symbol 'decrementer_max' was not declared. Should it be static? >> warning: symbol 'rtc_lock' was not declared. Should it be static? >> warning: symbol 'dtl_consumer' was not declared. Should it be static? >> >> Declare 'decrementer_max' in powerpc asm/time.h. >> Include linux/mc146818rtc.h in powerpc kernel/time.c where 'rtc_lock' >> is declared. And remove duplicated declaration of 'rtc_lock' in powerpc >> platforms/chrp/time.c because it has included linux/mc146818rtc.h. >> Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it >> is declared there. >> >> Reported-by: Hulk Robot <hulkci@huawei.com> >> Signed-off-by: He Ying <heying24@huawei.com> >> --- >> V2: >> - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare >> rtc_lock in powerpc asm/time.h. >> V3: >> - Recover to V1, that is including linux/mc146818rtc.h in powerpc >> kernel/time.c. And remove duplicated declaration of 'rtc_lock' in powerpc >> platforms/chrp/time.c because it has included linux/mc146818rtc.h. >> >> arch/powerpc/include/asm/time.h | 1 + >> arch/powerpc/kernel/time.c | 9 ++++----- >> arch/powerpc/platforms/chrp/time.c | 2 -- >> 3 files changed, 5 insertions(+), 7 deletions(-) >> >> diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h >> index 8dd3cdb25338..2cd2b50bedda 100644 >> --- a/arch/powerpc/include/asm/time.h >> +++ b/arch/powerpc/include/asm/time.h >> @@ -22,6 +22,7 @@ extern unsigned long tb_ticks_per_jiffy; >> extern unsigned long tb_ticks_per_usec; >> extern unsigned long tb_ticks_per_sec; >> extern struct clock_event_device decrementer_clockevent; >> +extern u64 decrementer_max; >> >> >> extern void generic_calibrate_decr(void); >> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c >> index b67d93a609a2..ac81f043bf49 100644 >> --- a/arch/powerpc/kernel/time.c >> +++ b/arch/powerpc/kernel/time.c >> @@ -55,8 +55,9 @@ >> #include <linux/sched/cputime.h> >> #include <linux/sched/clock.h> >> #include <linux/processor.h> >> -#include <asm/trace.h> >> +#include <linux/mc146818rtc.h> > I'm fine with that but I really think my suggestion to make the rtc_lock > local to the platforms was better because it is only used to synchronize > between concurrent invocations of chrp_set_rtc_time or > maple_set_rtc_time. The rtc core will never do that and the only case > would be concurrent calls to rtc_ops.set_time and > update_persistent_clock64 (which should also be removed at some point). Many thanks for your suggestion. As you suggest, rtc_lock should be local to platforms. Does it mean not only powerpc but also all other platforms should adapt this change? It might be a big change. I have no idea if that's OK. What are other maintainers' opinions? Thanks.
On 24/03/2021 17:46:19+0800, heying (H) wrote: > Many thanks for your suggestion. As you suggest, rtc_lock should be local to > platforms. > > Does it mean not only powerpc but also all other platforms should adapt this > change? Not all the other ones, in the current state, x86 still needs it. I'll work on that. Again, the patch is fine as is. Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h index 8dd3cdb25338..2cd2b50bedda 100644 --- a/arch/powerpc/include/asm/time.h +++ b/arch/powerpc/include/asm/time.h @@ -22,6 +22,7 @@ extern unsigned long tb_ticks_per_jiffy; extern unsigned long tb_ticks_per_usec; extern unsigned long tb_ticks_per_sec; extern struct clock_event_device decrementer_clockevent; +extern u64 decrementer_max; extern void generic_calibrate_decr(void); diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index b67d93a609a2..ac81f043bf49 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -55,8 +55,9 @@ #include <linux/sched/cputime.h> #include <linux/sched/clock.h> #include <linux/processor.h> -#include <asm/trace.h> +#include <linux/mc146818rtc.h> +#include <asm/trace.h> #include <asm/interrupt.h> #include <asm/io.h> #include <asm/nvram.h> @@ -150,10 +151,6 @@ bool tb_invalid; u64 __cputime_usec_factor; EXPORT_SYMBOL(__cputime_usec_factor); -#ifdef CONFIG_PPC_SPLPAR -void (*dtl_consumer)(struct dtl_entry *, u64); -#endif - static void calc_cputime_factors(void) { struct div_result res; @@ -179,6 +176,8 @@ static inline unsigned long read_spurr(unsigned long tb) #include <asm/dtl.h> +void (*dtl_consumer)(struct dtl_entry *, u64); + /* * Scan the dispatch trace log and count up the stolen time. * Should be called with interrupts disabled. diff --git a/arch/powerpc/platforms/chrp/time.c b/arch/powerpc/platforms/chrp/time.c index acde7bbe0716..b94dfd5090d8 100644 --- a/arch/powerpc/platforms/chrp/time.c +++ b/arch/powerpc/platforms/chrp/time.c @@ -30,8 +30,6 @@ #include <platforms/chrp/chrp.h> -extern spinlock_t rtc_lock; - #define NVRAM_AS0 0x74 #define NVRAM_AS1 0x75 #define NVRAM_DATA 0x77
We found these warnings in arch/powerpc/kernel/time.c as follows: warning: symbol 'decrementer_max' was not declared. Should it be static? warning: symbol 'rtc_lock' was not declared. Should it be static? warning: symbol 'dtl_consumer' was not declared. Should it be static? Declare 'decrementer_max' in powerpc asm/time.h. Include linux/mc146818rtc.h in powerpc kernel/time.c where 'rtc_lock' is declared. And remove duplicated declaration of 'rtc_lock' in powerpc platforms/chrp/time.c because it has included linux/mc146818rtc.h. Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it is declared there. Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: He Ying <heying24@huawei.com> --- V2: - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare rtc_lock in powerpc asm/time.h. V3: - Recover to V1, that is including linux/mc146818rtc.h in powerpc kernel/time.c. And remove duplicated declaration of 'rtc_lock' in powerpc platforms/chrp/time.c because it has included linux/mc146818rtc.h. arch/powerpc/include/asm/time.h | 1 + arch/powerpc/kernel/time.c | 9 ++++----- arch/powerpc/platforms/chrp/time.c | 2 -- 3 files changed, 5 insertions(+), 7 deletions(-)