From: Palmer Dabbelt <palmerdabbelt@google.com> To: Damien Le Moal <Damien.LeMoal@wdc.com> Cc: sboyd@kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: drivers/clk/clk-k210.c:717:6: warning: variable 'reg' set but not used Date: Fri, 11 Jun 2021 20:55:41 -0700 (PDT) [thread overview] Message-ID: <mhng-7814f596-6d02-4031-b90d-7db1cfed8970@palmerdabbelt-glaptop> (raw) In-Reply-To: <DM6PR04MB7081C0499CCCA8C9B9E36610E73C9@DM6PR04MB7081.namprd04.prod.outlook.com> On Thu, 03 Jun 2021 03:03:14 PDT (-0700), Damien Le Moal wrote: >> On 2021/06/03 18:35, kernel test robot wrote: >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master >> head: 324c92e5e0ee0e993bdb106fac407846ed677f6b >> commit: c6ca7616f7d5c2ce166280107ba74db1d528fcb7 clk: Add RISC-V Canaan Kendryte K210 clock driver >> date: 3 months ago >> config: riscv-randconfig-r033-20210603 (attached as .config) >> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d8e0ae9a76a62bdc6117630d59bf9967ac9bb4ea) >> 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 riscv cross compiling tool for clang build >> # apt-get install binutils-riscv64-linux-gnu >> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6ca7616f7d5c2ce166280107ba74db1d528fcb7 >> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git >> git fetch --no-tags linus master >> git checkout c6ca7616f7d5c2ce166280107ba74db1d528fcb7 >> # save the attached .config to linux build tree >> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv >> >> 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/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:556:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inb(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:55:76: note: expanded from macro 'inb' >> #define inb(c) ({ u8 __v; __io_pbr(); __v = readb_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:87:48: note: expanded from macro 'readb_cpu' >> #define readb_cpu(c) ({ u8 __r = __raw_readb(c); __r; }) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:564:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inw(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:56:76: note: expanded from macro 'inw' >> #define inw(c) ({ u16 __v; __io_pbr(); __v = readw_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:88:76: note: expanded from macro 'readw_cpu' >> #define readw_cpu(c) ({ u16 __r = le16_to_cpu((__force __le16)__raw_readw(c)); __r; }) >> ^ >> include/uapi/linux/byteorder/little_endian.h:36:51: note: expanded from macro '__le16_to_cpu' >> #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:572:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inl(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:57:76: note: expanded from macro 'inl' >> #define inl(c) ({ u32 __v; __io_pbr(); __v = readl_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:89:76: note: expanded from macro 'readl_cpu' >> #define readl_cpu(c) ({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; }) >> ^ >> include/uapi/linux/byteorder/little_endian.h:34:51: note: expanded from macro '__le32_to_cpu' >> #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:580:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outb(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:59:68: note: expanded from macro 'outb' >> #define outb(v,c) ({ __io_pbw(); writeb_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:91:52: note: expanded from macro 'writeb_cpu' >> #define writeb_cpu(v, c) ((void)__raw_writeb((v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:588:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outw(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:60:68: note: expanded from macro 'outw' >> #define outw(v,c) ({ __io_pbw(); writew_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:92:76: note: expanded from macro 'writew_cpu' >> #define writew_cpu(v, c) ((void)__raw_writew((__force u16)cpu_to_le16(v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:596:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outl(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:61:68: note: expanded from macro 'outl' >> #define outl(v,c) ({ __io_pbw(); writel_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:93:76: note: expanded from macro 'writel_cpu' >> #define writel_cpu(v, c) ((void)__raw_writel((__force u32)cpu_to_le32(v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:1005:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port; >> ~~~~~~~~~~ ^ >>>> drivers/clk/clk-k210.c:717:6: warning: variable 'reg' set but not used [-Wunused-but-set-variable] >> u32 reg; >> ^ >> 8 warnings generated. >> >> >> vim +/reg +717 drivers/clk/clk-k210.c >> >> 710 >> 711 static int k210_clk_set_parent(struct clk_hw *hw, u8 index) >> 712 { >> 713 struct k210_clk *kclk = to_k210_clk(hw); >> 714 struct k210_sysclk *ksc = kclk->ksc; >> 715 struct k210_clk_cfg *cfg = &k210_clk_cfgs[kclk->id]; >> 716 unsigned long flags; >> > 717 u32 reg; > > Palmer, > > I do not think this driver is the real cause of this error. Did something change > recently with risc-v mmio readl()/writel() ? I have no idea what's going on here. When I try to re-build that config I don't get any warnings or errors. That said... >> 718 >> 719 spin_lock_irqsave(&ksc->clk_lock, flags); >> 720 reg = readl(ksc->regs + cfg->mux_reg); >> 721 if (index) >> 722 reg |= BIT(cfg->mux_bit); >> 723 else >> 724 reg &= ~BIT(cfg->mux_bit); >> 725 spin_unlock_irqrestore(&ksc->clk_lock, flags); Isn't reg unused here? That's one of the warnings. The void* casting has been there for a while and looks like a real bug, but asm-generic adopted our {in,out}{bwlq} implementation so I'm just going to toss ours. I'm not quite sure why the generic ones aren't doing arithmetic on void*, but I'm not getting warnings. >> 726 >> 727 return 0; >> 728 } >> 729 >> >> --- >> 0-DAY CI Kernel Test Service, Intel Corporation >> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org >> > > >-- >Damien Le Moal >Western Digital Research >
WARNING: multiple messages have this Message-ID (diff)
From: Palmer Dabbelt <palmerdabbelt@google.com> To: Damien Le Moal <Damien.LeMoal@wdc.com> Cc: sboyd@kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: drivers/clk/clk-k210.c:717:6: warning: variable 'reg' set but not used Date: Fri, 11 Jun 2021 20:55:41 -0700 (PDT) [thread overview] Message-ID: <mhng-7814f596-6d02-4031-b90d-7db1cfed8970@palmerdabbelt-glaptop> (raw) In-Reply-To: <DM6PR04MB7081C0499CCCA8C9B9E36610E73C9@DM6PR04MB7081.namprd04.prod.outlook.com> On Thu, 03 Jun 2021 03:03:14 PDT (-0700), Damien Le Moal wrote: >> On 2021/06/03 18:35, kernel test robot wrote: >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master >> head: 324c92e5e0ee0e993bdb106fac407846ed677f6b >> commit: c6ca7616f7d5c2ce166280107ba74db1d528fcb7 clk: Add RISC-V Canaan Kendryte K210 clock driver >> date: 3 months ago >> config: riscv-randconfig-r033-20210603 (attached as .config) >> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d8e0ae9a76a62bdc6117630d59bf9967ac9bb4ea) >> 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 riscv cross compiling tool for clang build >> # apt-get install binutils-riscv64-linux-gnu >> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6ca7616f7d5c2ce166280107ba74db1d528fcb7 >> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git >> git fetch --no-tags linus master >> git checkout c6ca7616f7d5c2ce166280107ba74db1d528fcb7 >> # save the attached .config to linux build tree >> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv >> >> 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/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:556:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inb(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:55:76: note: expanded from macro 'inb' >> #define inb(c) ({ u8 __v; __io_pbr(); __v = readb_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:87:48: note: expanded from macro 'readb_cpu' >> #define readb_cpu(c) ({ u8 __r = __raw_readb(c); __r; }) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:564:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inw(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:56:76: note: expanded from macro 'inw' >> #define inw(c) ({ u16 __v; __io_pbr(); __v = readw_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:88:76: note: expanded from macro 'readw_cpu' >> #define readw_cpu(c) ({ u16 __r = le16_to_cpu((__force __le16)__raw_readw(c)); __r; }) >> ^ >> include/uapi/linux/byteorder/little_endian.h:36:51: note: expanded from macro '__le16_to_cpu' >> #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:572:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return inl(addr); >> ^~~~~~~~~ >> arch/riscv/include/asm/io.h:57:76: note: expanded from macro 'inl' >> #define inl(c) ({ u32 __v; __io_pbr(); __v = readl_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:89:76: note: expanded from macro 'readl_cpu' >> #define readl_cpu(c) ({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; }) >> ^ >> include/uapi/linux/byteorder/little_endian.h:34:51: note: expanded from macro '__le32_to_cpu' >> #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:580:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outb(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:59:68: note: expanded from macro 'outb' >> #define outb(v,c) ({ __io_pbw(); writeb_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:91:52: note: expanded from macro 'writeb_cpu' >> #define writeb_cpu(v, c) ((void)__raw_writeb((v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:588:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outw(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:60:68: note: expanded from macro 'outw' >> #define outw(v,c) ({ __io_pbw(); writew_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:92:76: note: expanded from macro 'writew_cpu' >> #define writew_cpu(v, c) ((void)__raw_writew((__force u16)cpu_to_le16(v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:596:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> outl(value, addr); >> ^~~~~~~~~~~~~~~~~ >> arch/riscv/include/asm/io.h:61:68: note: expanded from macro 'outl' >> #define outl(v,c) ({ __io_pbw(); writel_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); }) >> ~~~~~~~~~~ ^ >> arch/riscv/include/asm/mmio.h:93:76: note: expanded from macro 'writel_cpu' >> #define writel_cpu(v, c) ((void)__raw_writel((__force u32)cpu_to_le32(v), (c))) >> ^ >> In file included from drivers/clk/clk-k210.c:8: >> In file included from include/linux/io.h:13: >> In file included from arch/riscv/include/asm/io.h:149: >> include/asm-generic/io.h:1005:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] >> return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port; >> ~~~~~~~~~~ ^ >>>> drivers/clk/clk-k210.c:717:6: warning: variable 'reg' set but not used [-Wunused-but-set-variable] >> u32 reg; >> ^ >> 8 warnings generated. >> >> >> vim +/reg +717 drivers/clk/clk-k210.c >> >> 710 >> 711 static int k210_clk_set_parent(struct clk_hw *hw, u8 index) >> 712 { >> 713 struct k210_clk *kclk = to_k210_clk(hw); >> 714 struct k210_sysclk *ksc = kclk->ksc; >> 715 struct k210_clk_cfg *cfg = &k210_clk_cfgs[kclk->id]; >> 716 unsigned long flags; >> > 717 u32 reg; > > Palmer, > > I do not think this driver is the real cause of this error. Did something change > recently with risc-v mmio readl()/writel() ? I have no idea what's going on here. When I try to re-build that config I don't get any warnings or errors. That said... >> 718 >> 719 spin_lock_irqsave(&ksc->clk_lock, flags); >> 720 reg = readl(ksc->regs + cfg->mux_reg); >> 721 if (index) >> 722 reg |= BIT(cfg->mux_bit); >> 723 else >> 724 reg &= ~BIT(cfg->mux_bit); >> 725 spin_unlock_irqrestore(&ksc->clk_lock, flags); Isn't reg unused here? That's one of the warnings. The void* casting has been there for a while and looks like a real bug, but asm-generic adopted our {in,out}{bwlq} implementation so I'm just going to toss ours. I'm not quite sure why the generic ones aren't doing arithmetic on void*, but I'm not getting warnings. >> 726 >> 727 return 0; >> 728 } >> 729 >> >> --- >> 0-DAY CI Kernel Test Service, Intel Corporation >> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org >> > > >-- >Damien Le Moal >Western Digital Research > _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2021-06-12 3:55 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-03 9:34 drivers/clk/clk-k210.c:717:6: warning: variable 'reg' set but not used kernel test robot 2021-06-03 9:34 ` kernel test robot 2021-06-03 10:03 ` Damien Le Moal 2021-06-03 10:03 ` Damien Le Moal 2021-06-12 3:55 ` Palmer Dabbelt [this message] 2021-06-12 3:55 ` Palmer Dabbelt 2021-06-12 13:18 ` Jisheng Zhang 2021-06-12 13:18 ` Jisheng Zhang 2021-06-14 2:08 ` Damien Le Moal 2021-06-14 2:08 ` Damien Le Moal
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=mhng-7814f596-6d02-4031-b90d-7db1cfed8970@palmerdabbelt-glaptop \ --to=palmerdabbelt@google.com \ --cc=Damien.LeMoal@wdc.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=sboyd@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.