2021-03-17 10:36:52

by He Ying

[permalink] [raw]
Subject: [PATCH -next] powerpc: kernel/time.c - cleanup warnings

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 arch/powerpc/include/asm/time.h. And include
proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
definition behind "include <asm/dtl.h>" because 'dtl_consumer' is declared
there.

Reported-by: Hulk Robot <[email protected]>
Signed-off-by: He Ying <[email protected]>
---
arch/powerpc/include/asm/time.h | 1 +
arch/powerpc/kernel/time.c | 7 +++----
2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -55,6 +55,7 @@
#include <linux/sched/cputime.h>
#include <linux/sched/clock.h>
#include <linux/processor.h>
+#include <linux/mc146818rtc.h>
#include <asm/trace.h>

#include <asm/interrupt.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.
--
2.17.1


2021-03-17 11:19:20

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH -next] powerpc: kernel/time.c - cleanup warnings



Le 17/03/2021 à 11:34, 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 arch/powerpc/include/asm/time.h. And include
> proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
> definition behind "include <asm/dtl.h>" because 'dtl_consumer' is declared
> there.
>
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: He Ying <[email protected]>
> ---
> arch/powerpc/include/asm/time.h | 1 +
> arch/powerpc/kernel/time.c | 7 +++----
> 2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
> --- a/arch/powerpc/kernel/time.c
> +++ b/arch/powerpc/kernel/time.c
> @@ -55,6 +55,7 @@
> #include <linux/sched/cputime.h>
> #include <linux/sched/clock.h>
> #include <linux/processor.h>
> +#include <linux/mc146818rtc.h>

I don't think that's the good place. It has no link to powerpc, it is only by chance that it has the
same name.

As rtc_lock is defined in powerpc time.c, I think you should declare it in powerpc asm/time.h


> #include <asm/trace.h>
>
> #include <asm/interrupt.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.
>

2021-03-18 02:31:17

by He Ying

[permalink] [raw]
Subject: Re: [PATCH -next] powerpc: kernel/time.c - cleanup warnings


在 2021/3/17 19:16, Christophe Leroy 写道:
>
>
> Le 17/03/2021 à 11:34, 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 arch/powerpc/include/asm/time.h. And
>> include
>> proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
>> definition behind "include <asm/dtl.h>" because 'dtl_consumer' is
>> declared
>> there.
>>
>> Reported-by: Hulk Robot <[email protected]>
>> Signed-off-by: He Ying <[email protected]>
>> ---
>>   arch/powerpc/include/asm/time.h | 1 +
>>   arch/powerpc/kernel/time.c      | 7 +++----
>>   2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
>> --- a/arch/powerpc/kernel/time.c
>> +++ b/arch/powerpc/kernel/time.c
>> @@ -55,6 +55,7 @@
>>   #include <linux/sched/cputime.h>
>>   #include <linux/sched/clock.h>
>>   #include <linux/processor.h>
>> +#include <linux/mc146818rtc.h>
>
> I don't think that's the good place. It has no link to powerpc, it is
> only by chance that it has the same name.
>
> As rtc_lock is defined in powerpc time.c, I think you should declare
> it in powerpc asm/time.h

My first thought was the same as yours. I tried to add declaration in
powerpc asm/time.h, but got a compiling error:

drivers/rtc/rtc-vr41xx.c:75:24: error: static declaration of ‘rtc_lock’
follows non-static declaration
 static DEFINE_SPINLOCK(rtc_lock);

In file included from ./arch/powerpc/include/asm/delay.h:7:0,
                 from ./arch/powerpc/include/asm/io.h:33,
                 from ./include/linux/io.h:13,
                 from drivers/rtc/rtc-vr41xx.c:11:
./arch/powerpc/include/asm/time.h:25:19: note: previous declaration of
‘rtc_lock’ was here
 extern spinlock_t rtc_lock;

There's a conflict. Perhaps I can rename it in drivers/rtc/rtc-vr41xx.c.


But I find an existing declaration in linux/mc146818rtc.h and there's
only one definition for 'rtc_lock' in powerpc.

There's some includes of mc146818rtc.h in powperc. I wonder they point
to the same thing. But I'm not very sure

because the header's name looks a bit strange.

>
>
>>   #include <asm/trace.h>
>>     #include <asm/interrupt.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.
>>
> .

2021-03-23 06:23:45

by He Ying

[permalink] [raw]
Subject: Re: [PATCH -next] powerpc: kernel/time.c - cleanup warnings

Dear Christophe,


在 2021/3/18 10:28, heying (H) 写道:
>
> 在 2021/3/17 19:16, Christophe Leroy 写道:
>>
>>
>> Le 17/03/2021 à 11:34, 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 arch/powerpc/include/asm/time.h. And
>>> include
>>> proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
>>> definition behind "include <asm/dtl.h>" because 'dtl_consumer' is
>>> declared
>>> there.
>>>
>>> Reported-by: Hulk Robot <[email protected]>
>>> Signed-off-by: He Ying <[email protected]>
>>> ---
>>>   arch/powerpc/include/asm/time.h | 1 +
>>>   arch/powerpc/kernel/time.c      | 7 +++----
>>>   2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
>>> --- a/arch/powerpc/kernel/time.c
>>> +++ b/arch/powerpc/kernel/time.c
>>> @@ -55,6 +55,7 @@
>>>   #include <linux/sched/cputime.h>
>>>   #include <linux/sched/clock.h>
>>>   #include <linux/processor.h>
>>> +#include <linux/mc146818rtc.h>
>>
>> I don't think that's the good place. It has no link to powerpc, it is
>> only by chance that it has the same name.
>>
>> As rtc_lock is defined in powerpc time.c, I think you should declare
>> it in powerpc asm/time.h
>
> My first thought was the same as yours. I tried to add declaration in
> powerpc asm/time.h, but got a compiling error:
>
> drivers/rtc/rtc-vr41xx.c:75:24: error: static declaration of
> ‘rtc_lock’ follows non-static declaration
>  static DEFINE_SPINLOCK(rtc_lock);
>
> In file included from ./arch/powerpc/include/asm/delay.h:7:0,
>                  from ./arch/powerpc/include/asm/io.h:33,
>                  from ./include/linux/io.h:13,
>                  from drivers/rtc/rtc-vr41xx.c:11:
> ./arch/powerpc/include/asm/time.h:25:19: note: previous declaration of
> ‘rtc_lock’ was here
>  extern spinlock_t rtc_lock;
>
> There's a conflict. Perhaps I can rename it in drivers/rtc/rtc-vr41xx.c.
>
>
> But I find an existing declaration in linux/mc146818rtc.h and there's
> only one definition for 'rtc_lock' in powerpc.
>
> There's some includes of mc146818rtc.h in powperc. I wonder they point
> to the same thing. But I'm not very sure
>
> because the header's name looks a bit strange.

How about including mc146818rtc.h in powperpc kernel/time.c? May I have
your opinions please?


Thanks.


2021-03-23 06:35:42

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH -next] powerpc: kernel/time.c - cleanup warnings



Le 23/03/2021 à 07:21, heying (H) a écrit :
> Dear Christophe,
>
>
> 在 2021/3/18 10:28, heying (H) 写道:
>>
>> 在 2021/3/17 19:16, Christophe Leroy 写道:
>>>
>>>
>>> Le 17/03/2021 à 11:34, 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 arch/powerpc/include/asm/time.h. And include
>>>> proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
>>>> definition behind "include <asm/dtl.h>" because 'dtl_consumer' is declared
>>>> there.
>>>>
>>>> Reported-by: Hulk Robot <[email protected]>
>>>> Signed-off-by: He Ying <[email protected]>
>>>> ---
>>>>   arch/powerpc/include/asm/time.h | 1 +
>>>>   arch/powerpc/kernel/time.c      | 7 +++----
>>>>   2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
>>>> --- a/arch/powerpc/kernel/time.c
>>>> +++ b/arch/powerpc/kernel/time.c
>>>> @@ -55,6 +55,7 @@
>>>>   #include <linux/sched/cputime.h>
>>>>   #include <linux/sched/clock.h>
>>>>   #include <linux/processor.h>
>>>> +#include <linux/mc146818rtc.h>
>>>
>>> I don't think that's the good place. It has no link to powerpc, it is only by chance that it has
>>> the same name.
>>>
>>> As rtc_lock is defined in powerpc time.c, I think you should declare it in powerpc asm/time.h
>>
>> My first thought was the same as yours. I tried to add declaration in powerpc asm/time.h, but got
>> a compiling error:
>>
>> drivers/rtc/rtc-vr41xx.c:75:24: error: static declaration of ‘rtc_lock’ follows non-static
>> declaration
>>  static DEFINE_SPINLOCK(rtc_lock);
>>
>> In file included from ./arch/powerpc/include/asm/delay.h:7:0,
>>                  from ./arch/powerpc/include/asm/io.h:33,
>>                  from ./include/linux/io.h:13,
>>                  from drivers/rtc/rtc-vr41xx.c:11:
>> ./arch/powerpc/include/asm/time.h:25:19: note: previous declaration of ‘rtc_lock’ was here
>>  extern spinlock_t rtc_lock;
>>
>> There's a conflict. Perhaps I can rename it in drivers/rtc/rtc-vr41xx.c.
>>
>>
>> But I find an existing declaration in linux/mc146818rtc.h and there's only one definition for
>> 'rtc_lock' in powerpc.
>>
>> There's some includes of mc146818rtc.h in powperc. I wonder they point to the same thing. But I'm
>> not very sure
>>
>> because the header's name looks a bit strange.
>
> How about including mc146818rtc.h in powperpc kernel/time.c? May I have your opinions please?
>

As I said, mc146818rtc.h is not related to powerpc, and if it works that's just chance, and there is
no certainty that it will still work in the future.

If you can't find a clean solution, it is better to leave the warning.

Christophe

2021-03-23 06:55:23

by He Ying

[permalink] [raw]
Subject: Re: [PATCH -next] powerpc: kernel/time.c - cleanup warnings

Dear Christophe,


在 2021/3/23 14:33, Christophe Leroy 写道:
>
>
> Le 23/03/2021 à 07:21, heying (H) a écrit :
>> Dear Christophe,
>>
>>
>> 在 2021/3/18 10:28, heying (H) 写道:
>>>
>>> 在 2021/3/17 19:16, Christophe Leroy 写道:
>>>>
>>>>
>>>> Le 17/03/2021 à 11:34, 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 arch/powerpc/include/asm/time.h. And
>>>>> include
>>>>> proper header in which 'rtc_lock' is declared. Move 'dtl_consumer'
>>>>> definition behind "include <asm/dtl.h>" because 'dtl_consumer' is
>>>>> declared
>>>>> there.
>>>>>
>>>>> Reported-by: Hulk Robot <[email protected]>
>>>>> Signed-off-by: He Ying <[email protected]>
>>>>> ---
>>>>>   arch/powerpc/include/asm/time.h | 1 +
>>>>>   arch/powerpc/kernel/time.c      | 7 +++----
>>>>>   2 files changed, 4 insertions(+), 4 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..409967713ca6 100644
>>>>> --- a/arch/powerpc/kernel/time.c
>>>>> +++ b/arch/powerpc/kernel/time.c
>>>>> @@ -55,6 +55,7 @@
>>>>>   #include <linux/sched/cputime.h>
>>>>>   #include <linux/sched/clock.h>
>>>>>   #include <linux/processor.h>
>>>>> +#include <linux/mc146818rtc.h>
>>>>
>>>> I don't think that's the good place. It has no link to powerpc, it
>>>> is only by chance that it has the same name.
>>>>
>>>> As rtc_lock is defined in powerpc time.c, I think you should
>>>> declare it in powerpc asm/time.h
>>>
>>> My first thought was the same as yours. I tried to add declaration
>>> in powerpc asm/time.h, but got a compiling error:
>>>
>>> drivers/rtc/rtc-vr41xx.c:75:24: error: static declaration of
>>> ‘rtc_lock’ follows non-static declaration
>>>  static DEFINE_SPINLOCK(rtc_lock);
>>>
>>> In file included from ./arch/powerpc/include/asm/delay.h:7:0,
>>>                  from ./arch/powerpc/include/asm/io.h:33,
>>>                  from ./include/linux/io.h:13,
>>>                  from drivers/rtc/rtc-vr41xx.c:11:
>>> ./arch/powerpc/include/asm/time.h:25:19: note: previous declaration
>>> of ‘rtc_lock’ was here
>>>  extern spinlock_t rtc_lock;
>>>
>>> There's a conflict. Perhaps I can rename it in
>>> drivers/rtc/rtc-vr41xx.c.
>>>
>>>
>>> But I find an existing declaration in linux/mc146818rtc.h and
>>> there's only one definition for 'rtc_lock' in powerpc.
>>>
>>> There's some includes of mc146818rtc.h in powperc. I wonder they
>>> point to the same thing. But I'm not very sure
>>>
>>> because the header's name looks a bit strange.
>>
>> How about including mc146818rtc.h in powperpc kernel/time.c? May I
>> have your opinions please?
>>
>
> As I said, mc146818rtc.h is not related to powerpc, and if it works
> that's just chance, and there is no certainty that it will still work
> in the future.
>
> If you can't find a clean solution, it is better to leave the warning.

OK. I see. Thanks for you relpy. I'll try to find some other better way.


Thanks.