* [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
@ 2023-09-20 23:35 kernel test robot
2023-09-21 9:23 ` Richard Fitzgerald
0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2023-09-20 23:35 UTC (permalink / raw)
To: Richard Fitzgerald; +Cc: llvm, oe-kbuild-all, alsa-devel, Takashi Iwai
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@intel.com/config)
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@intel.com/reproduce)
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
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
2023-09-20 23:35 [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant kernel test robot
@ 2023-09-21 9:23 ` Richard Fitzgerald
2023-09-21 12:34 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Richard Fitzgerald @ 2023-09-21 9:23 UTC (permalink / raw)
To: arnd, treding; +Cc: llvm, oe-kbuild-all, alsa-devel, Takashi Iwai
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@intel.com/config)
> 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@intel.com/reproduce)
>
> 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
2023-09-21 9:23 ` Richard Fitzgerald
@ 2023-09-21 12:34 ` Takashi Iwai
2023-09-21 16:21 ` Arnd Bergmann
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2023-09-21 12:34 UTC (permalink / raw)
To: Richard Fitzgerald; +Cc: arnd, treding, llvm, oe-kbuild-all, alsa-devel
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@intel.com/config)
> > 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@intel.com/reproduce)
> >
> > 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant
2023-09-21 12:34 ` Takashi Iwai
@ 2023-09-21 16:21 ` Arnd Bergmann
0 siblings, 0 replies; 4+ messages in thread
From: Arnd Bergmann @ 2023-09-21 16:21 UTC (permalink / raw)
To: Takashi Iwai, Richard Fitzgerald
Cc: Thierry Reding, llvm, oe-kbuild-all, alsa-devel
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-09-21 16:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-20 23:35 [tiwai-sound:for-next 36/38] sound/pci/hda/cirrus_scodec_test.c:151:60: error: initializer element is not a compile-time constant kernel test robot
2023-09-21 9:23 ` Richard Fitzgerald
2023-09-21 12:34 ` Takashi Iwai
2023-09-21 16:21 ` Arnd Bergmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox