include/linux/gpio/driver.h:31:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')

From: kernel test robot
Date: Sun Feb 26 2023 - 17:50:22 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f3a2439f20d918930cc4ae8f76fe1c1afd26958f
commit: 70afdab904d2d1e68bffe75fe08e7e48e0b0ff8e irqchip: Add IMX MU MSI controller driver
date: 5 months ago
config: i386-buildonly-randconfig-r006-20230227 (https://download.01.org/0day-ci/archive/20230227/202302270633.RKhl0Tlx-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=70afdab904d2d1e68bffe75fe08e7e48e0b0ff8e
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 70afdab904d2d1e68bffe75fe08e7e48e0b0ff8e
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202302270633.RKhl0Tlx-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

In file included from drivers/misc/hi6421v600-irq.c:14:
In file included from include/linux/of_gpio.h:14:
>> include/linux/gpio/driver.h:31:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t msiinfo;
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
1 error generated.
--
>> arch/x86/kernel/hpet.c:520:39: error: incomplete definition of type 'struct irq_alloc_info'
irq_domain_set_info(domain, virq, arg->hwirq, info->chip, NULL,
~~~^
arch/x86/include/asm/io_apic.h:90:8: note: forward declaration of 'struct irq_alloc_info'
struct irq_alloc_info;
^
arch/x86/kernel/hpet.c:521:28: error: incomplete definition of type 'struct irq_alloc_info'
handle_edge_irq, arg->data, "edge");
~~~^
arch/x86/include/asm/io_apic.h:90:8: note: forward declaration of 'struct irq_alloc_info'
struct irq_alloc_info;
^
>> arch/x86/kernel/hpet.c:550:6: error: use of undeclared identifier 'x86_vector_domain'
if (x86_vector_domain == NULL)
^
arch/x86/kernel/hpet.c:577:16: error: use of undeclared identifier 'x86_vector_domain'
if (parent != x86_vector_domain)
^
>> arch/x86/kernel/hpet.c:598:24: error: variable has incomplete type 'struct irq_alloc_info'
struct irq_alloc_info info;
^
arch/x86/include/asm/io_apic.h:90:8: note: forward declaration of 'struct irq_alloc_info'
struct irq_alloc_info;
^
>> arch/x86/kernel/hpet.c:600:2: error: implicit declaration of function 'init_irq_alloc_info' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
init_irq_alloc_info(&info, NULL);
^
>> arch/x86/kernel/hpet.c:601:14: error: use of undeclared identifier 'X86_IRQ_ALLOC_TYPE_HPET'
info.type = X86_IRQ_ALLOC_TYPE_HPET;
^
7 errors generated.
--
>> kernel/irq/msi.c:585:12: error: incomplete definition of type 'struct irq_alloc_info'
return arg->hwirq;
~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
>> kernel/irq/msi.c:591:23: error: invalid application of 'sizeof' to an incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
memset(arg, 0, sizeof(*arg));
^~~~~~
arch/x86/include/asm/string_32.h:195:52: note: expanded from macro 'memset'
#define memset(s, c, count) __builtin_memset(s, c, count)
^~~~~
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
kernel/irq/msi.c:598:5: error: incomplete definition of type 'struct irq_alloc_info'
arg->desc = desc;
~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
>> kernel/irq/msi.c:858:19: error: variable has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t arg = { };
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
4 errors generated.
--
>> drivers/base/platform-msi.c:26:20: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t arg;
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
1 error generated.
--
In file included from drivers/mmc/host/dw_mmc.c:38:
In file included from include/linux/of_gpio.h:14:
>> include/linux/gpio/driver.h:31:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t msiinfo;
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
drivers/mmc/host/dw_mmc.c:3040:33: warning: shift count >= width of type [-Wshift-count-overflow]
if (!dma_set_mask(host->dev, DMA_BIT_MASK(64)))
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
drivers/mmc/host/dw_mmc.c:3042:13: warning: shift count >= width of type [-Wshift-count-overflow]
DMA_BIT_MASK(64));
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
2 warnings and 1 error generated.
--
In file included from drivers/char/tpm/st33zp24/st33zp24.c:15:
In file included from include/linux/gpio.h:62:
In file included from include/asm-generic/gpio.h:11:
>> include/linux/gpio/driver.h:31:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t msiinfo;
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
In file included from drivers/char/tpm/st33zp24/st33zp24.c:21:
In file included from drivers/char/tpm/st33zp24/../tpm.h:28:
include/linux/tpm_eventlog.h:167:6: warning: variable 'mapping_size' set but not used [-Wunused-but-set-variable]
int mapping_size;
^
1 warning and 1 error generated.
--
In file included from drivers/gpio/gpio-mxc.c:22:
>> include/linux/gpio/driver.h:31:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
msi_alloc_info_t msiinfo;
^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
typedef struct irq_alloc_info msi_alloc_info_t;
^
drivers/gpio/gpio-mxc.c:341:50: warning: shift count >= width of type [-Wshift-count-overflow]
rv = devm_irq_setup_generic_chip(port->dev, gc, IRQ_MSK(32),
^~~~~~~~~~~
include/linux/irq.h:1193:41: note: expanded from macro 'IRQ_MSK'
#define IRQ_MSK(n) (u32)((n) < 32 ? ((1 << (n)) - 1) : UINT_MAX)
^ ~~~
1 warning and 1 error generated.


vim +31 include/linux/gpio/driver.h

fdd61a013a24f2 Linus Walleij 2019-08-08 27
91a29af413def6 Marc Zyngier 2022-07-07 28 union gpio_irq_fwspec {
91a29af413def6 Marc Zyngier 2022-07-07 29 struct irq_fwspec fwspec;
91a29af413def6 Marc Zyngier 2022-07-07 30 #ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
91a29af413def6 Marc Zyngier 2022-07-07 @31 msi_alloc_info_t msiinfo;
91a29af413def6 Marc Zyngier 2022-07-07 32 #endif
91a29af413def6 Marc Zyngier 2022-07-07 33 };
91a29af413def6 Marc Zyngier 2022-07-07 34

:::::: The code at line 31 was first introduced by commit
:::::: 91a29af413def677495e447fb9a06957ebc8bed5 gpio: Remove dynamic allocation from populate_parent_alloc_arg()

:::::: TO: Marc Zyngier <maz@xxxxxxxxxx>
:::::: CC: Marc Zyngier <maz@xxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests