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' and 'rtc_lock' in powerpc asm/time.h. Rename 'rtc_lock' in drviers/rtc/rtc-vr41xx.c to 'vr41xx_rtc_lock' to avoid the conflict with the variable in powerpc asm/time.h. Move 'dtl_consumer' definition behind "include <asm/dtl.h>" because it is declared there. Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> Signed-off-by: He Ying <heying24@xxxxxxxxxx> --- v2: - Instead of including linux/mc146818rtc.h in powerpc kernel/time.c, declare rtc_lock in powerpc asm/time.h. arch/powerpc/include/asm/time.h | 3 +++ arch/powerpc/kernel/time.c | 6 ++---- drivers/rtc/rtc-vr41xx.c | 22 +++++++++++----------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h index 8dd3cdb25338..64a3ef0b4270 100644 --- a/arch/powerpc/include/asm/time.h +++ b/arch/powerpc/include/asm/time.h @@ -12,6 +12,7 @@ #ifdef __KERNEL__ #include <linux/types.h> #include <linux/percpu.h> +#include <linux/spinlock.h> #include <asm/processor.h> #include <asm/cpu_has_feature.h> @@ -22,6 +23,8 @@ 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 spinlock_t rtc_lock; extern void generic_calibrate_decr(void); diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index b67d93a609a2..60b6ac7d3685 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -150,10 +150,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 +175,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/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c index 5a9f9ad86d32..cc31db058197 100644 --- a/drivers/rtc/rtc-vr41xx.c +++ b/drivers/rtc/rtc-vr41xx.c @@ -72,7 +72,7 @@ static void __iomem *rtc2_base; static unsigned long epoch = 1970; /* Jan 1 1970 00:00:00 */ -static DEFINE_SPINLOCK(rtc_lock); +static DEFINE_SPINLOCK(vr41xx_rtc_lock); static char rtc_name[] = "RTC"; static unsigned long periodic_count; static unsigned int alarm_enabled; @@ -101,13 +101,13 @@ static inline time64_t read_elapsed_second(void) static inline void write_elapsed_second(time64_t sec) { - spin_lock_irq(&rtc_lock); + spin_lock_irq(&vr41xx_rtc_lock); rtc1_write(ETIMELREG, (uint16_t)(sec << 15)); rtc1_write(ETIMEMREG, (uint16_t)(sec >> 1)); rtc1_write(ETIMEHREG, (uint16_t)(sec >> 17)); - spin_unlock_irq(&rtc_lock); + spin_unlock_irq(&vr41xx_rtc_lock); } static int vr41xx_rtc_read_time(struct device *dev, struct rtc_time *time) @@ -139,14 +139,14 @@ static int vr41xx_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) unsigned long low, mid, high; struct rtc_time *time = &wkalrm->time; - spin_lock_irq(&rtc_lock); + spin_lock_irq(&vr41xx_rtc_lock); low = rtc1_read(ECMPLREG); mid = rtc1_read(ECMPMREG); high = rtc1_read(ECMPHREG); wkalrm->enabled = alarm_enabled; - spin_unlock_irq(&rtc_lock); + spin_unlock_irq(&vr41xx_rtc_lock); rtc_time64_to_tm((high << 17) | (mid << 1) | (low >> 15), time); @@ -159,7 +159,7 @@ static int vr41xx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) alarm_sec = rtc_tm_to_time64(&wkalrm->time); - spin_lock_irq(&rtc_lock); + spin_lock_irq(&vr41xx_rtc_lock); if (alarm_enabled) disable_irq(aie_irq); @@ -173,7 +173,7 @@ static int vr41xx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) alarm_enabled = wkalrm->enabled; - spin_unlock_irq(&rtc_lock); + spin_unlock_irq(&vr41xx_rtc_lock); return 0; } @@ -202,7 +202,7 @@ static int vr41xx_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long static int vr41xx_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) { - spin_lock_irq(&rtc_lock); + spin_lock_irq(&vr41xx_rtc_lock); if (enabled) { if (!alarm_enabled) { enable_irq(aie_irq); @@ -214,7 +214,7 @@ static int vr41xx_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) alarm_enabled = 0; } } - spin_unlock_irq(&rtc_lock); + spin_unlock_irq(&vr41xx_rtc_lock); return 0; } @@ -296,7 +296,7 @@ static int rtc_probe(struct platform_device *pdev) rtc->range_max = (1ULL << 33) - 1; rtc->max_user_freq = MAX_PERIODIC_RATE; - spin_lock_irq(&rtc_lock); + spin_lock_irq(&vr41xx_rtc_lock); rtc1_write(ECMPLREG, 0); rtc1_write(ECMPMREG, 0); @@ -304,7 +304,7 @@ static int rtc_probe(struct platform_device *pdev) rtc1_write(RTCL1LREG, 0); rtc1_write(RTCL1HREG, 0); - spin_unlock_irq(&rtc_lock); + spin_unlock_irq(&vr41xx_rtc_lock); aie_irq = platform_get_irq(pdev, 0); if (aie_irq <= 0) { -- 2.17.1