[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202508050424.a3t4xpkO-lkp@intel.com>
Date: Tue, 5 Aug 2025 05:03:14 +0800
From: kernel test robot <lkp@...el.com>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
linux-kernel@...r.kernel.org, x86@...nel.org
Subject: [tip:x86/urgent 2/2] include/linux/msi.h:528:19: error: field has
incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/urgent
head: e3079ac6cf4213dd46a7a292150b2ba7e6e85bac
commit: e3079ac6cf4213dd46a7a292150b2ba7e6e85bac [2/2] x86/irq: Plug vector setup race
config: i386-buildonly-randconfig-001-20250805 (https://download.01.org/0day-ci/archive/20250805/202508050424.a3t4xpkO-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250805/202508050424.a3t4xpkO-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508050424.a3t4xpkO-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from arch/x86/kernel/tsc.c:20:
In file included from arch/x86/include/asm/hpet.h:5:
>> include/linux/msi.h:528:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
528 | msi_alloc_info_t alloc_info;
| ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:98:11: warning: array index 3 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
98 | return (set->sig[3] | set->sig[2] |
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:98:25: warning: array index 2 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
98 | return (set->sig[3] | set->sig[2] |
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:114:11: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:115:5: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
115 | (set1->sig[2] == set2->sig[2]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:115:21: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
115 | (set1->sig[2] == set2->sig[2]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:157:1: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
157 | _SIG_SET_BINOP(sigorsets, _sig_or)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:138:8: note: expanded from macro '_SIG_SET_BINOP'
138 | a3 = a->sig[3]; a2 = a->sig[2]; \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
In file included from arch/x86/include/asm/nmi.h:5:
In file included from include/linux/irq_work.h:6:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:157:1: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
157 | _SIG_SET_BINOP(sigorsets, _sig_or)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:138:24: note: expanded from macro '_SIG_SET_BINOP'
138 | a3 = a->sig[3]; a2 = a->sig[2]; \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from arch/x86/kernel/tsc.c:26:
--
In file included from arch/x86/kernel/quirks.c:9:
In file included from arch/x86/include/asm/hpet.h:5:
>> include/linux/msi.h:528:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
528 | msi_alloc_info_t alloc_info;
| ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
1 error generated.
--
In file included from arch/x86/kernel/x86_init.c:24:
In file included from arch/x86/include/asm/hpet.h:5:
>> include/linux/msi.h:528:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
528 | msi_alloc_info_t alloc_info;
| ^
arch/x86/include/asm/io_apic.h:90:8: note: forward declaration of 'struct irq_alloc_info'
90 | struct irq_alloc_info;
| ^
1 error generated.
--
In file included from drivers/base/platform-msi.c:12:
>> include/linux/msi.h:528:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
528 | msi_alloc_info_t alloc_info;
| ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
>> drivers/base/platform-msi.c:28:5: error: incomplete definition of type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
28 | arg->desc = desc;
| ~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
drivers/base/platform-msi.c:29:5: error: incomplete definition of type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
29 | arg->hwirq = desc->msi_index;
| ~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
3 errors generated.
--
In file included from kernel/irq/msi.c:14:
>> include/linux/msi.h:528:19: error: field has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
528 | msi_alloc_info_t alloc_info;
| ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:98:11: warning: array index 3 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
98 | return (set->sig[3] | set->sig[2] |
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:98:25: warning: array index 2 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
98 | return (set->sig[3] | set->sig[2] |
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:114:11: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:115:5: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
115 | (set1->sig[2] == set2->sig[2]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:115:21: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
115 | (set1->sig[2] == set2->sig[2]) &&
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:157:1: warning: array index 3 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
157 | _SIG_SET_BINOP(sigorsets, _sig_or)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:138:8: note: expanded from macro '_SIG_SET_BINOP'
138 | a3 = a->sig[3]; a2 = a->sig[2]; \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:157:1: warning: array index 2 is past the end of the array (that has type 'const unsigned long[2]') [-Warray-bounds]
157 | _SIG_SET_BINOP(sigorsets, _sig_or)
--
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:163:1: warning: array index 2 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
163 | _SIG_SET_BINOP(sigandnsets, _sig_andn)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:141:3: note: expanded from macro '_SIG_SET_BINOP'
141 | r->sig[2] = op(a2, b2); \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:187:1: warning: array index 3 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
187 | _SIG_SET_OP(signotset, _sig_not)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:174:27: note: expanded from macro '_SIG_SET_OP'
174 | case 4: set->sig[3] = op(set->sig[3]); \
| ^ ~
include/linux/signal.h:186:24: note: expanded from macro '_sig_not'
186 | #define _sig_not(x) (~(x))
| ^
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:187:1: warning: array index 3 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
187 | _SIG_SET_OP(signotset, _sig_not)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:174:10: note: expanded from macro '_SIG_SET_OP'
174 | case 4: set->sig[3] = op(set->sig[3]); \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:187:1: warning: array index 2 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
187 | _SIG_SET_OP(signotset, _sig_not)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:175:20: note: expanded from macro '_SIG_SET_OP'
175 | set->sig[2] = op(set->sig[2]); \
| ^ ~
include/linux/signal.h:186:24: note: expanded from macro '_sig_not'
186 | #define _sig_not(x) (~(x))
| ^
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
In file included from kernel/irq/msi.c:16:
In file included from include/linux/pci.h:2148:
In file included from arch/x86/include/asm/pci.h:5:
In file included from include/linux/mm.h:36:
In file included from include/linux/rcuwait.h:6:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:187:1: warning: array index 2 is past the end of the array (that has type 'unsigned long[2]') [-Warray-bounds]
187 | _SIG_SET_OP(signotset, _sig_not)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/signal.h:175:3: note: expanded from macro '_SIG_SET_OP'
175 | set->sig[2] = op(set->sig[2]); \
| ^ ~
arch/x86/include/asm/signal.h:24:2: note: array 'sig' declared here
24 | unsigned long sig[_NSIG_WORDS];
| ^
kernel/irq/msi.c:789:12: error: incomplete definition of type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
789 | return arg->hwirq;
| ~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
kernel/irq/msi.c:795:23: error: invalid application of 'sizeof' to an incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
795 | memset(arg, 0, sizeof(*arg));
| ^~~~~~
include/linux/fortify-string.h:512:52: note: expanded from macro 'memset'
512 | #define memset(p, c, s) __fortify_memset_chk(p, c, s, \
| ^
include/linux/fortify-string.h:502:35: note: expanded from macro '__fortify_memset_chk'
502 | size_t __fortify_size = (size_t)(size); \
| ^~~~
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
kernel/irq/msi.c:806:5: error: incomplete definition of type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
806 | arg->desc = desc;
| ~~~^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
>> kernel/irq/msi.c:1288:7: error: incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info') is not assignable
1288 | *arg = *info->alloc_data;
| ~~~~ ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
kernel/irq/msi.c:1299:19: error: variable has incomplete type 'msi_alloc_info_t' (aka 'struct irq_alloc_info')
1299 | msi_alloc_info_t arg = { };
| ^
arch/x86/include/asm/msi.h:7:16: note: forward declaration of 'struct irq_alloc_info'
7 | typedef struct irq_alloc_info msi_alloc_info_t;
| ^
28 warnings and 6 errors generated.
vim +528 include/linux/msi.h
f3cf8bb0d6c3c1 Jiang Liu 2014-11-12 514
ebca4396ee1852 Thomas Gleixner 2022-11-25 515 /**
ebca4396ee1852 Thomas Gleixner 2022-11-25 516 * struct msi_domain_template - Template for MSI device domains
ebca4396ee1852 Thomas Gleixner 2022-11-25 517 * @name: Storage for the resulting name. Filled in by the core.
ebca4396ee1852 Thomas Gleixner 2022-11-25 518 * @chip: Interrupt chip for this domain
ebca4396ee1852 Thomas Gleixner 2022-11-25 519 * @ops: MSI domain ops
ebca4396ee1852 Thomas Gleixner 2022-11-25 520 * @info: MSI domain info data
1396e89e09f00d Marc Zyngier 2025-05-13 521 * @alloc_info: MSI domain allocation data (architecture specific)
ebca4396ee1852 Thomas Gleixner 2022-11-25 522 */
ebca4396ee1852 Thomas Gleixner 2022-11-25 523 struct msi_domain_template {
ebca4396ee1852 Thomas Gleixner 2022-11-25 524 char name[48];
ebca4396ee1852 Thomas Gleixner 2022-11-25 525 struct irq_chip chip;
ebca4396ee1852 Thomas Gleixner 2022-11-25 526 struct msi_domain_ops ops;
ebca4396ee1852 Thomas Gleixner 2022-11-25 527 struct msi_domain_info info;
1396e89e09f00d Marc Zyngier 2025-05-13 @528 msi_alloc_info_t alloc_info;
ebca4396ee1852 Thomas Gleixner 2022-11-25 529 };
ebca4396ee1852 Thomas Gleixner 2022-11-25 530
:::::: The code at line 528 was first introduced by commit
:::::: 1396e89e09f00deb816e5f4a176d71d554922292 genirq/msi: Move prepare() call to per-device allocation
:::::: TO: Marc Zyngier <maz@...nel.org>
:::::: CC: Thomas Gleixner <tglx@...utronix.de>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists