[tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next head: 72f6a13022f3bf16df305b75c32f95ece263a5ce commit: 2144833e7b41459fa2d52bb0676f0ab4920cf32c [36/38] ALSA: hda: cirrus_scodec: Add KUnit test config: hexagon-randconfig-r041-20211219 (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot lkp@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202309210751.TXlnuEMF-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from sound/pci/hda/cirrus_scodec_test.c:9: In file included from include/linux/gpio/driver.h:6: In file included from include/linux/irqchip/chained_irq.h:10: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:547: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:560: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/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) ^ In file included from sound/pci/hda/cirrus_scodec_test.c:9: In file included from include/linux/gpio/driver.h:6: In file included from include/linux/irqchip/chained_irq.h:10: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:573: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/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu' #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) ^ In file included from sound/pci/hda/cirrus_scodec_test.c:9: In file included from include/linux/gpio/driver.h:6: In file included from include/linux/irqchip/chained_irq.h:10: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:584: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:594: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:604: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); ~~~~~~~~~~ ^
sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
SOFTWARE_NODE_REFERENCE(&cirrus_scodec_test_gpio_swnode, gpio_num, 0); ^~~~~~~~ include/linux/property.h:291:37: note: expanded from macro 'SOFTWARE_NODE_REFERENCE' .nargs = ARRAY_SIZE(((u64[]){ 0, ##__VA_ARGS__ })) - 1, \ ^~~~~~~~~~~ include/linux/kernel.h:57:75: note: expanded from macro 'ARRAY_SIZE' #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) ^~~ include/linux/compiler.h:231:59: note: expanded from macro '__must_be_array' #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) ^ include/linux/compiler_types.h:366:63: note: expanded from macro '__same_type' #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) ^ include/linux/build_bug.h:16:62: note: expanded from macro 'BUILD_BUG_ON_ZERO' #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); }))) ^ 6 warnings and 1 error generated.
vim +151 sound/pci/hda/cirrus_scodec_test.c
146 147 static void cirrus_scodec_test_set_gpio_ref_arg(struct software_node_ref_args *arg, 148 int gpio_num) 149 { 150 struct software_node_ref_args template =
151 SOFTWARE_NODE_REFERENCE(&cirrus_scodec_test_gpio_swnode, gpio_num, 0);
152 153 *arg = template; 154 } 155
On 21/9/23 00:35, kernel test robot wrote:
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next head: 72f6a13022f3bf16df305b75c32f95ece263a5ce commit: 2144833e7b41459fa2d52bb0676f0ab4920cf32c [36/38] ALSA: hda: cirrus_scodec: Add KUnit test config: hexagon-randconfig-r041-20211219 (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot lkp@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202309210751.TXlnuEMF-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from sound/pci/hda/cirrus_scodec_test.c:9: In file included from include/linux/gpio/driver.h:6: In file included from include/linux/irqchip/chained_irq.h:10: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:547: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:560: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/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) ^
This looks like it has nothing to do with cirrus_scodec_test, it's just unfortunate that including gpio/driver.h results in also including io.h.
I think the problem here is that the way io.h tries to implement some functions that might depend on PCI_IOBASE is not portable. If PCI_IOBASE is not defined it defines it as NULL so that the functions will use (0 + addr). But clang doesn't like this.
Probably the address calculation should be factored out from all these functions so that it can be alternately defined as (PCI_IOBASE + addr) or just (addr) depending whether PCI_IOBASE is set.
I've added the author and maintainer of the io.h code and the author of the PCI_IOBASE hack for comment.
On Thu, 21 Sep 2023 11:23:14 +0200, Richard Fitzgerald wrote:
On 21/9/23 00:35, kernel test robot wrote:
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next head: 72f6a13022f3bf16df305b75c32f95ece263a5ce commit: 2144833e7b41459fa2d52bb0676f0ab4920cf32c [36/38] ALSA: hda: cirrus_scodec: Add KUnit test config: hexagon-randconfig-r041-20211219 (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230921/202309210751.TXlnuEMF-lkp@i...)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot lkp@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202309210751.TXlnuEMF-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from sound/pci/hda/cirrus_scodec_test.c:9: In file included from include/linux/gpio/driver.h:6: In file included from include/linux/irqchip/chained_irq.h:10: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:547: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:560: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/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) ^
This looks like it has nothing to do with cirrus_scodec_test, it's just unfortunate that including gpio/driver.h results in also including io.h.
Yeah, I believe this part is irrelevant can be ignored. It's included as a part of (single) log.
Only the line indicated with the marker ">>" is interesting, and that's what Andy already fixed in properties.h.
thanks,
Takashi
On Thu, Sep 21, 2023, at 08:34, Takashi Iwai wrote:
On Thu, 21 Sep 2023 11:23:14 +0200, Richard Fitzgerald wrote:
On 21/9/23 00:35, kernel test robot wrote:
In file included from arch/hexagon/include/asm/io.h:337: include/asm-generic/io.h:547: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:560: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/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) ^
This looks like it has nothing to do with cirrus_scodec_test, it's just unfortunate that including gpio/driver.h results in also including io.h.
Yeah, I believe this part is irrelevant can be ignored. It's included as a part of (single) log.
Correct, it's a known bug that we've been working on for (literally) years, it should be fixed soon by enforcing CONFIG_HAS_IOPORT soon to blank out these functions on architectures that cannot support them. I hope we can land the last patch for this in 6.7.
Arnd
participants (4)
-
Arnd Bergmann
-
kernel test robot
-
Richard Fitzgerald
-
Takashi Iwai