Message ID | 20220228111923.1400049-6-claudiu.beznea@microchip.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | clocksource/drivers/timer-microchip-pit64b: fixes and improvements | expand |
Hi Claudiu, I love your patch! Yet something to improve: [auto build test ERROR on tip/timers/core] [also build test ERROR on soc/for-next linus/master v5.17-rc6 next-20220225] [cannot apply to daniel-lezcano/clockevents/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Claudiu-Beznea/clocksource-drivers-timer-microchip-pit64b-fixes-and-improvements/20220228-191933 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 35e13e9da9afbce13c1d36465504ece4e65f24fe config: openrisc-randconfig-r035-20220228 (https://download.01.org/0day-ci/archive/20220228/202202282139.f38uxhKT-lkp@intel.com/config) compiler: or1k-linux-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/6050ca5a0af604ed2c397dcb907a9b057635a64e git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Claudiu-Beznea/clocksource-drivers-timer-microchip-pit64b-fixes-and-improvements/20220228-191933 git checkout 6050ca5a0af604ed2c397dcb907a9b057635a64e # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=openrisc SHELL=/bin/bash drivers/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/clocksource/timer-microchip-pit64b.c: In function 'mchp_pit64b_init_clksrc': >> drivers/clocksource/timer-microchip-pit64b.c:382:23: error: invalid use of undefined type 'struct delay_timer' 382 | mchp_pit64b_dt.read_current_timer = mchp_pit64b_dt_read; | ^ drivers/clocksource/timer-microchip-pit64b.c:383:23: error: invalid use of undefined type 'struct delay_timer' 383 | mchp_pit64b_dt.freq = clk_rate; | ^ >> drivers/clocksource/timer-microchip-pit64b.c:384:9: error: implicit declaration of function 'register_current_timer_delay' [-Werror=implicit-function-declaration] 384 | register_current_timer_delay(&mchp_pit64b_dt); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/clocksource/timer-microchip-pit64b.c: At top level: >> drivers/clocksource/timer-microchip-pit64b.c:97:27: error: storage size of 'mchp_pit64b_dt' isn't known 97 | static struct delay_timer mchp_pit64b_dt; | ^~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +382 drivers/clocksource/timer-microchip-pit64b.c 341 342 static int __init mchp_pit64b_init_clksrc(struct mchp_pit64b_timer *timer, 343 u32 clk_rate) 344 { 345 struct mchp_pit64b_clksrc *cs; 346 int ret; 347 348 cs = kzalloc(sizeof(*cs), GFP_KERNEL); 349 if (!cs) 350 return -ENOMEM; 351 352 mchp_pit64b_reset(timer, ULLONG_MAX, MCHP_PIT64B_MR_CONT, 0); 353 354 mchp_pit64b_cs_base = timer->base; 355 356 cs->timer.base = timer->base; 357 cs->timer.pclk = timer->pclk; 358 cs->timer.gclk = timer->gclk; 359 cs->timer.mode = timer->mode; 360 cs->clksrc.name = MCHP_PIT64B_NAME; 361 cs->clksrc.mask = CLOCKSOURCE_MASK(64); 362 cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS; 363 cs->clksrc.rating = 210; 364 cs->clksrc.read = mchp_pit64b_clksrc_read; 365 cs->clksrc.suspend = mchp_pit64b_clksrc_suspend; 366 cs->clksrc.resume = mchp_pit64b_clksrc_resume; 367 368 ret = clocksource_register_hz(&cs->clksrc, clk_rate); 369 if (ret) { 370 pr_debug("clksrc: Failed to register PIT64B clocksource!\n"); 371 372 /* Stop timer. */ 373 writel_relaxed(MCHP_PIT64B_CR_SWRST, 374 timer->base + MCHP_PIT64B_CR); 375 kfree(cs); 376 377 return ret; 378 } 379 380 sched_clock_register(mchp_pit64b_sched_read_clk, 64, clk_rate); 381 > 382 mchp_pit64b_dt.read_current_timer = mchp_pit64b_dt_read; 383 mchp_pit64b_dt.freq = clk_rate; > 384 register_current_timer_delay(&mchp_pit64b_dt); 385 386 return 0; 387 } 388 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Claudiu, I love your patch! Perhaps something to improve: [auto build test WARNING on tip/timers/core] [also build test WARNING on soc/for-next linus/master v5.17-rc6 next-20220225] [cannot apply to daniel-lezcano/clockevents/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Claudiu-Beznea/clocksource-drivers-timer-microchip-pit64b-fixes-and-improvements/20220228-191933 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 35e13e9da9afbce13c1d36465504ece4e65f24fe config: s390-randconfig-r036-20220228 (https://download.01.org/0day-ci/archive/20220228/202202282242.zM0FjCHj-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install s390 cross compiling tool for clang build # apt-get install binutils-s390x-linux-gnu # https://github.com/0day-ci/linux/commit/6050ca5a0af604ed2c397dcb907a9b057635a64e git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Claudiu-Beznea/clocksource-drivers-timer-microchip-pit64b-fixes-and-improvements/20220228-191933 git checkout 6050ca5a0af604ed2c397dcb907a9b057635a64e # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/clocksource/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): In file included from drivers/clocksource/timer-microchip-pit64b.c:11: In file included from include/linux/clockchips.h:14: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:75: include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __raw_readb(PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) ^ include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16' #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x)) ^ In file included from drivers/clocksource/timer-microchip-pit64b.c:11: In file included from include/linux/clockchips.h:14: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:75: include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu' #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x)) ^ include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32' #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) ^ In file included from drivers/clocksource/timer-microchip-pit64b.c:11: In file included from include/linux/clockchips.h:14: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:75: include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writeb(value, PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] readsb(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] readsw(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] readsl(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] writesb(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] writesw(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] writesl(PCI_IOBASE + addr, buffer, count); ~~~~~~~~~~ ^ >> drivers/clocksource/timer-microchip-pit64b.c:97:27: warning: tentative definition of variable with internal linkage has incomplete non-array type 'struct delay_timer' [-Wtentative-definition-incomplete-type] static struct delay_timer mchp_pit64b_dt; ^ drivers/clocksource/timer-microchip-pit64b.c:97:15: note: forward declaration of 'struct delay_timer' static struct delay_timer mchp_pit64b_dt; ^ drivers/clocksource/timer-microchip-pit64b.c:382:16: error: incomplete definition of type 'struct delay_timer' mchp_pit64b_dt.read_current_timer = mchp_pit64b_dt_read; ~~~~~~~~~~~~~~^ drivers/clocksource/timer-microchip-pit64b.c:97:15: note: forward declaration of 'struct delay_timer' static struct delay_timer mchp_pit64b_dt; ^ drivers/clocksource/timer-microchip-pit64b.c:383:16: error: incomplete definition of type 'struct delay_timer' mchp_pit64b_dt.freq = clk_rate; ~~~~~~~~~~~~~~^ drivers/clocksource/timer-microchip-pit64b.c:97:15: note: forward declaration of 'struct delay_timer' static struct delay_timer mchp_pit64b_dt; ^ drivers/clocksource/timer-microchip-pit64b.c:384:2: error: implicit declaration of function 'register_current_timer_delay' [-Werror,-Wimplicit-function-declaration] register_current_timer_delay(&mchp_pit64b_dt); ^ drivers/clocksource/timer-microchip-pit64b.c:97:27: error: tentative definition has type 'struct delay_timer' that is never completed static struct delay_timer mchp_pit64b_dt; ^ drivers/clocksource/timer-microchip-pit64b.c:97:15: note: forward declaration of 'struct delay_timer' static struct delay_timer mchp_pit64b_dt; ^ 13 warnings and 4 errors generated. vim +97 drivers/clocksource/timer-microchip-pit64b.c 87 88 #define clksrc_to_mchp_pit64b_timer(x) \ 89 ((struct mchp_pit64b_timer *)container_of(x,\ 90 struct mchp_pit64b_clksrc, clksrc)) 91 92 /* Base address for clocksource timer. */ 93 static void __iomem *mchp_pit64b_cs_base; 94 /* Default cycles for clockevent timer. */ 95 static u64 mchp_pit64b_ce_cycles; 96 /* Delay timer. */ > 97 static struct delay_timer mchp_pit64b_dt; 98 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/clocksource/timer-microchip-pit64b.c b/drivers/clocksource/timer-microchip-pit64b.c index abce83d2f00b..f1b211ee6312 100644 --- a/drivers/clocksource/timer-microchip-pit64b.c +++ b/drivers/clocksource/timer-microchip-pit64b.c @@ -9,6 +9,7 @@ #include <linux/clk.h> #include <linux/clockchips.h> +#include <linux/delay.h> #include <linux/interrupt.h> #include <linux/of_address.h> #include <linux/of_irq.h> @@ -92,6 +93,8 @@ struct mchp_pit64b_clksrc { static void __iomem *mchp_pit64b_cs_base; /* Default cycles for clockevent timer. */ static u64 mchp_pit64b_ce_cycles; +/* Delay timer. */ +static struct delay_timer mchp_pit64b_dt; static inline u64 mchp_pit64b_cnt_read(void __iomem *base) { @@ -169,6 +172,11 @@ static u64 notrace mchp_pit64b_sched_read_clk(void) return mchp_pit64b_cnt_read(mchp_pit64b_cs_base); } +static unsigned long notrace mchp_pit64b_dt_read(void) +{ + return mchp_pit64b_cnt_read(mchp_pit64b_cs_base); +} + static int mchp_pit64b_clkevt_shutdown(struct clock_event_device *cedev) { struct mchp_pit64b_timer *timer = clkevt_to_mchp_pit64b_timer(cedev); @@ -371,6 +379,10 @@ static int __init mchp_pit64b_init_clksrc(struct mchp_pit64b_timer *timer, sched_clock_register(mchp_pit64b_sched_read_clk, 64, clk_rate); + mchp_pit64b_dt.read_current_timer = mchp_pit64b_dt_read; + mchp_pit64b_dt.freq = clk_rate; + register_current_timer_delay(&mchp_pit64b_dt); + return 0; }
Add delay timer. Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com> --- drivers/clocksource/timer-microchip-pit64b.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)