[arm-platforms:irq/domain_cleanup 14/20] include/linux/irqdesc.h:56:25: error: field has incomplete type 'struct irq_common_data'
kernel test robot
lkp at intel.com
Fri May 14 02:34:56 PDT 2021
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/domain_cleanup
head: 76a98e310bbd7bada3f24d6fda08858460fd6cd4
commit: 5dd760fc3140b85b7d8cf1ad003238c5a223fc76 [14/20] irqdomain: Introduce irq_resolve_mapping()
config: mips-randconfig-r004-20210514 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 425781bce01f2f1d5f553d3b2bf9ebbd6e15068c)
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 mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=5dd760fc3140b85b7d8cf1ad003238c5a223fc76
git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
git fetch --no-tags arm-platforms irq/domain_cleanup
git checkout 5dd760fc3140b85b7d8cf1ad003238c5a223fc76
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All errors (new ones prefixed by >>):
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:56:25: error: field has incomplete type 'struct irq_common_data'
struct irq_common_data irq_common_data;
^
include/linux/irqdesc.h:56:9: note: forward declaration of 'struct irq_common_data'
struct irq_common_data irq_common_data;
^
>> include/linux/irqdesc.h:57:19: error: field has incomplete type 'struct irq_data'
struct irq_data irq_data;
^
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:113:33: error: use of undeclared identifier 'NR_IRQS'
extern struct irq_desc irq_desc[NR_IRQS];
^
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:703:26: note: expanded from macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:704:34: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
include/linux/compiler_types.h:264: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:39:58: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~
include/linux/compiler_types.h:328:22: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~
include/linux/compiler_types.h:316:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^~~~~~~~~
include/linux/compiler_types.h:308:9: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:705:20: note: expanded from macro 'container_of'
!__same_type(*(ptr), void), \
^~~
include/linux/compiler_types.h:264: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:39:58: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~
include/linux/compiler_types.h:328:22: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~
include/linux/compiler_types.h:316:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^~~~~~~~~
include/linux/compiler_types.h:308:9: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
include/linux/irqdesc.h:229:6: error: incomplete definition of type 'struct irq_data'
data->chip = chip;
~~~~^
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:236:35: error: use of undeclared identifier 'IRQ_NO_BALANCING_MASK'
return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
^
>> include/linux/irqdesc.h:241:35: error: use of undeclared identifier 'IRQ_PER_CPU'
return irq_check_status_bit(irq, IRQ_PER_CPU);
^
>> include/linux/irqdesc.h:246:35: error: use of undeclared identifier 'IRQ_PER_CPU_DEVID'
return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
^
arch/mips/kernel/asm-offsets.c:26:6: warning: no previous prototype for function 'output_ptreg_defines' [-Wmissing-prototypes]
void output_ptreg_defines(void)
^
arch/mips/kernel/asm-offsets.c:26:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_ptreg_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:78:6: warning: no previous prototype for function 'output_task_defines' [-Wmissing-prototypes]
void output_task_defines(void)
^
arch/mips/kernel/asm-offsets.c:78:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_task_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:93:6: warning: no previous prototype for function 'output_thread_info_defines' [-Wmissing-prototypes]
void output_thread_info_defines(void)
^
arch/mips/kernel/asm-offsets.c:93:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_thread_info_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:109:6: warning: no previous prototype for function 'output_thread_defines' [-Wmissing-prototypes]
void output_thread_defines(void)
^
arch/mips/kernel/asm-offsets.c:109:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_thread_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:180:6: warning: no previous prototype for function 'output_mm_defines' [-Wmissing-prototypes]
void output_mm_defines(void)
^
arch/mips/kernel/asm-offsets.c:180:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_mm_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:219:6: warning: no previous prototype for function 'output_sc_defines' [-Wmissing-prototypes]
void output_sc_defines(void)
^
arch/mips/kernel/asm-offsets.c:219:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_sc_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:254:6: warning: no previous prototype for function 'output_signal_defined' [-Wmissing-prototypes]
void output_signal_defined(void)
^
arch/mips/kernel/asm-offsets.c:254:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_signal_defined(void)
^
static
arch/mips/kernel/asm-offsets.c:391:6: warning: no previous prototype for function 'output_cps_defines' [-Wmissing-prototypes]
void output_cps_defines(void)
^
arch/mips/kernel/asm-offsets.c:391:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_cps_defines(void)
^
static
8 warnings and 10 errors generated.
--
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:56:25: error: field has incomplete type 'struct irq_common_data'
struct irq_common_data irq_common_data;
^
include/linux/irqdesc.h:56:9: note: forward declaration of 'struct irq_common_data'
struct irq_common_data irq_common_data;
^
>> include/linux/irqdesc.h:57:19: error: field has incomplete type 'struct irq_data'
struct irq_data irq_data;
^
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:113:33: error: use of undeclared identifier 'NR_IRQS'
extern struct irq_desc irq_desc[NR_IRQS];
^
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:703:26: note: expanded from macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:704:34: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
include/linux/compiler_types.h:264: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:39:58: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~
include/linux/compiler_types.h:328:22: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~
include/linux/compiler_types.h:316:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^~~~~~~~~
include/linux/compiler_types.h:308:9: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:124:26: error: incomplete definition of type 'struct irq_data'
return container_of(data->common, struct irq_desc, irq_common_data);
~~~~^
include/linux/kernel.h:705:20: note: expanded from macro 'container_of'
!__same_type(*(ptr), void), \
^~~
include/linux/compiler_types.h:264: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:39:58: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~
include/linux/compiler_types.h:328:22: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~
include/linux/compiler_types.h:316:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^~~~~~~~~
include/linux/compiler_types.h:308:9: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
include/linux/irqdesc.h:229:6: error: incomplete definition of type 'struct irq_data'
data->chip = chip;
~~~~^
include/linux/irqhandler.h:11:8: note: forward declaration of 'struct irq_data'
struct irq_data;
^
In file included from arch/mips/kernel/asm-offsets.c:17:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/mips/include/asm/hardirq.h:16:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:23:
In file included from arch/mips/include/asm/irq.h:14:
In file included from include/linux/irqdomain.h:35:
>> include/linux/irqdesc.h:236:35: error: use of undeclared identifier 'IRQ_NO_BALANCING_MASK'
return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
^
>> include/linux/irqdesc.h:241:35: error: use of undeclared identifier 'IRQ_PER_CPU'
return irq_check_status_bit(irq, IRQ_PER_CPU);
^
>> include/linux/irqdesc.h:246:35: error: use of undeclared identifier 'IRQ_PER_CPU_DEVID'
return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
^
arch/mips/kernel/asm-offsets.c:26:6: warning: no previous prototype for function 'output_ptreg_defines' [-Wmissing-prototypes]
void output_ptreg_defines(void)
^
arch/mips/kernel/asm-offsets.c:26:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_ptreg_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:78:6: warning: no previous prototype for function 'output_task_defines' [-Wmissing-prototypes]
void output_task_defines(void)
^
arch/mips/kernel/asm-offsets.c:78:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_task_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:93:6: warning: no previous prototype for function 'output_thread_info_defines' [-Wmissing-prototypes]
void output_thread_info_defines(void)
^
arch/mips/kernel/asm-offsets.c:93:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_thread_info_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:109:6: warning: no previous prototype for function 'output_thread_defines' [-Wmissing-prototypes]
void output_thread_defines(void)
^
arch/mips/kernel/asm-offsets.c:109:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_thread_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:180:6: warning: no previous prototype for function 'output_mm_defines' [-Wmissing-prototypes]
void output_mm_defines(void)
^
arch/mips/kernel/asm-offsets.c:180:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_mm_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:219:6: warning: no previous prototype for function 'output_sc_defines' [-Wmissing-prototypes]
void output_sc_defines(void)
^
arch/mips/kernel/asm-offsets.c:219:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_sc_defines(void)
^
static
arch/mips/kernel/asm-offsets.c:254:6: warning: no previous prototype for function 'output_signal_defined' [-Wmissing-prototypes]
void output_signal_defined(void)
^
arch/mips/kernel/asm-offsets.c:254:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_signal_defined(void)
^
static
arch/mips/kernel/asm-offsets.c:391:6: warning: no previous prototype for function 'output_cps_defines' [-Wmissing-prototypes]
void output_cps_defines(void)
^
arch/mips/kernel/asm-offsets.c:391:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void output_cps_defines(void)
^
static
8 warnings and 10 errors generated.
make[2]: *** [scripts/Makefile.build:117: arch/mips/kernel/asm-offsets.s] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [Makefile:1227: prepare0] Error 2
make[1]: Target 'modules_prepare' not remade because of errors.
make: *** [Makefile:215: __sub-make] Error 2
make: Target 'modules_prepare' not remade because of errors.
..
vim +56 include/linux/irqdesc.h
293a7a0a165c4f Thomas Gleixner 2012-10-16 19
e144710b302525 Thomas Gleixner 2010-10-01 20 /**
e144710b302525 Thomas Gleixner 2010-10-01 21 * struct irq_desc - interrupt descriptor
0d0b4c866bcce6 Jiang Liu 2015-06-01 22 * @irq_common_data: per irq and chip data passed down to chip functions
e144710b302525 Thomas Gleixner 2010-10-01 23 * @kstat_irqs: irq stats per cpu
770767787c2304 Geert Uytterhoeven 2011-04-10 24 * @handle_irq: highlevel irq-events handler
e144710b302525 Thomas Gleixner 2010-10-01 25 * @action: the irq action chain
80ebc420ec59a7 Yunfeng Ye 2019-09-18 26 * @status_use_accessors: status information
dbec07bac614a6 Thomas Gleixner 2011-02-07 27 * @core_internal_state__do_not_mess_with_it: core internal status information
e144710b302525 Thomas Gleixner 2010-10-01 28 * @depth: disable-depth, for nested irq_disable() calls
0911f124bf5535 Geert Uytterhoeven 2011-04-10 29 * @wake_depth: enable depth, for multiple irq_set_irq_wake() callers
030fc443aef663 Waiman Long 2019-02-12 30 * @tot_count: stats field for non-percpu irqs
e144710b302525 Thomas Gleixner 2010-10-01 31 * @irq_count: stats field to detect stalled irqs
e144710b302525 Thomas Gleixner 2010-10-01 32 * @last_unhandled: aging timer for unhandled count
e144710b302525 Thomas Gleixner 2010-10-01 33 * @irqs_unhandled: stats field for spurious unhandled interrupts
1e77d0a1ed7417 Thomas Gleixner 2013-03-07 34 * @threads_handled: stats field for deferred spurious detection of threaded handlers
a359f757965aaf Ingo Molnar 2021-03-22 35 * @threads_handled_last: comparator field for deferred spurious detection of threaded handlers
e144710b302525 Thomas Gleixner 2010-10-01 36 * @lock: locking for SMP
770767787c2304 Geert Uytterhoeven 2011-04-10 37 * @affinity_hint: hint to user space for preferred irq affinity
cd7eab44e9946c Ben Hutchings 2011-01-19 38 * @affinity_notify: context for notification of affinity changes
e144710b302525 Thomas Gleixner 2010-10-01 39 * @pending_mask: pending rebalanced interrupts
b5faba21a6805c Thomas Gleixner 2011-02-23 40 * @threads_oneshot: bitfield to handle shared oneshot threads
e144710b302525 Thomas Gleixner 2010-10-01 41 * @threads_active: number of irqaction threads currently running
e144710b302525 Thomas Gleixner 2010-10-01 42 * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers
cab303be91dc47 Thomas Gleixner 2014-08-28 43 * @nr_actions: number of installed actions on this descriptor
cab303be91dc47 Thomas Gleixner 2014-08-28 44 * @no_suspend_depth: number of irqactions on a irq descriptor with
cab303be91dc47 Thomas Gleixner 2014-08-28 45 * IRQF_NO_SUSPEND set
cab303be91dc47 Thomas Gleixner 2014-08-28 46 * @force_resume_depth: number of irqactions on a irq descriptor with
cab303be91dc47 Thomas Gleixner 2014-08-28 47 * IRQF_FORCE_RESUME set
425a5072dcd1bd Thomas Gleixner 2015-12-13 48 * @rcu: rcu head for delayed free
ecb3f394c5dba8 Craig Gallek 2016-09-13 49 * @kobj: kobject used to represent this struct in sysfs
9114014cf4e6df Thomas Gleixner 2017-06-29 50 * @request_mutex: mutex to protect request/free before locking desc->lock
e144710b302525 Thomas Gleixner 2010-10-01 51 * @dir: /proc/irq/ procfs entry
087cdfb662ae50 Thomas Gleixner 2017-06-20 52 * @debugfs_file: dentry for the debugfs file
e144710b302525 Thomas Gleixner 2010-10-01 53 * @name: flow handler name for /proc/interrupts output
e144710b302525 Thomas Gleixner 2010-10-01 54 */
e144710b302525 Thomas Gleixner 2010-10-01 55 struct irq_desc {
0d0b4c866bcce6 Jiang Liu 2015-06-01 @56 struct irq_common_data irq_common_data;
e144710b302525 Thomas Gleixner 2010-10-01 @57 struct irq_data irq_data;
6c9ae009b29875 Eric Dumazet 2011-01-13 58 unsigned int __percpu *kstat_irqs;
e144710b302525 Thomas Gleixner 2010-10-01 59 irq_flow_handler_t handle_irq;
e144710b302525 Thomas Gleixner 2010-10-01 60 struct irqaction *action; /* IRQ action list */
a6967caf00ebbb Thomas Gleixner 2011-02-10 61 unsigned int status_use_accessors;
dbec07bac614a6 Thomas Gleixner 2011-02-07 62 unsigned int core_internal_state__do_not_mess_with_it;
e144710b302525 Thomas Gleixner 2010-10-01 63 unsigned int depth; /* nested irq disables */
e144710b302525 Thomas Gleixner 2010-10-01 64 unsigned int wake_depth; /* nested wake enables */
1136b072896990 Thomas Gleixner 2019-02-08 65 unsigned int tot_count;
e144710b302525 Thomas Gleixner 2010-10-01 66 unsigned int irq_count; /* For detecting broken IRQs */
e144710b302525 Thomas Gleixner 2010-10-01 67 unsigned long last_unhandled; /* Aging timer for unhandled count */
e144710b302525 Thomas Gleixner 2010-10-01 68 unsigned int irqs_unhandled;
1e77d0a1ed7417 Thomas Gleixner 2013-03-07 69 atomic_t threads_handled;
1e77d0a1ed7417 Thomas Gleixner 2013-03-07 70 int threads_handled_last;
e144710b302525 Thomas Gleixner 2010-10-01 71 raw_spinlock_t lock;
31d9d9b6d83030 Marc Zyngier 2011-09-23 72 struct cpumask *percpu_enabled;
222df54fd8b764 Marc Zyngier 2016-04-11 73 const struct cpumask *percpu_affinity;
e144710b302525 Thomas Gleixner 2010-10-01 74 #ifdef CONFIG_SMP
e144710b302525 Thomas Gleixner 2010-10-01 75 const struct cpumask *affinity_hint;
cd7eab44e9946c Ben Hutchings 2011-01-19 76 struct irq_affinity_notify *affinity_notify;
e144710b302525 Thomas Gleixner 2010-10-01 77 #ifdef CONFIG_GENERIC_PENDING_IRQ
e144710b302525 Thomas Gleixner 2010-10-01 78 cpumask_var_t pending_mask;
e144710b302525 Thomas Gleixner 2010-10-01 79 #endif
e144710b302525 Thomas Gleixner 2010-10-01 80 #endif
b5faba21a6805c Thomas Gleixner 2011-02-23 81 unsigned long threads_oneshot;
e144710b302525 Thomas Gleixner 2010-10-01 82 atomic_t threads_active;
e144710b302525 Thomas Gleixner 2010-10-01 83 wait_queue_head_t wait_for_threads;
cab303be91dc47 Thomas Gleixner 2014-08-28 84 #ifdef CONFIG_PM_SLEEP
cab303be91dc47 Thomas Gleixner 2014-08-28 85 unsigned int nr_actions;
cab303be91dc47 Thomas Gleixner 2014-08-28 86 unsigned int no_suspend_depth;
17f480342026e5 Rafael J. Wysocki 2015-02-27 87 unsigned int cond_suspend_depth;
cab303be91dc47 Thomas Gleixner 2014-08-28 88 unsigned int force_resume_depth;
cab303be91dc47 Thomas Gleixner 2014-08-28 89 #endif
e144710b302525 Thomas Gleixner 2010-10-01 90 #ifdef CONFIG_PROC_FS
e144710b302525 Thomas Gleixner 2010-10-01 91 struct proc_dir_entry *dir;
425a5072dcd1bd Thomas Gleixner 2015-12-13 92 #endif
087cdfb662ae50 Thomas Gleixner 2017-06-20 93 #ifdef CONFIG_GENERIC_IRQ_DEBUGFS
087cdfb662ae50 Thomas Gleixner 2017-06-20 94 struct dentry *debugfs_file;
07557ccb8c83f3 Thomas Gleixner 2017-09-13 95 const char *dev_name;
087cdfb662ae50 Thomas Gleixner 2017-06-20 96 #endif
425a5072dcd1bd Thomas Gleixner 2015-12-13 97 #ifdef CONFIG_SPARSE_IRQ
425a5072dcd1bd Thomas Gleixner 2015-12-13 98 struct rcu_head rcu;
ecb3f394c5dba8 Craig Gallek 2016-09-13 99 struct kobject kobj;
e144710b302525 Thomas Gleixner 2010-10-01 100 #endif
9114014cf4e6df Thomas Gleixner 2017-06-29 101 struct mutex request_mutex;
293a7a0a165c4f Thomas Gleixner 2012-10-16 102 int parent_irq;
b6873807a7143b Sebastian Andrzej Siewior 2011-07-11 103 struct module *owner;
e144710b302525 Thomas Gleixner 2010-10-01 104 const char *name;
e144710b302525 Thomas Gleixner 2010-10-01 105 } ____cacheline_internodealigned_in_smp;
e144710b302525 Thomas Gleixner 2010-10-01 106
a899418167264c Thomas Gleixner 2015-07-05 107 #ifdef CONFIG_SPARSE_IRQ
a899418167264c Thomas Gleixner 2015-07-05 108 extern void irq_lock_sparse(void);
a899418167264c Thomas Gleixner 2015-07-05 109 extern void irq_unlock_sparse(void);
a899418167264c Thomas Gleixner 2015-07-05 110 #else
a899418167264c Thomas Gleixner 2015-07-05 111 static inline void irq_lock_sparse(void) { }
a899418167264c Thomas Gleixner 2015-07-05 112 static inline void irq_unlock_sparse(void) { }
e144710b302525 Thomas Gleixner 2010-10-01 @113 extern struct irq_desc irq_desc[NR_IRQS];
e144710b302525 Thomas Gleixner 2010-10-01 114 #endif
e144710b302525 Thomas Gleixner 2010-10-01 115
501e2db67fa426 Thomas Gleixner 2020-12-10 116 static inline unsigned int irq_desc_kstat_cpu(struct irq_desc *desc,
501e2db67fa426 Thomas Gleixner 2020-12-10 117 unsigned int cpu)
501e2db67fa426 Thomas Gleixner 2020-12-10 118 {
501e2db67fa426 Thomas Gleixner 2020-12-10 119 return desc->kstat_irqs ? *per_cpu_ptr(desc->kstat_irqs, cpu) : 0;
501e2db67fa426 Thomas Gleixner 2020-12-10 120 }
501e2db67fa426 Thomas Gleixner 2020-12-10 121
7bbf1dd24b17b9 Jiang Liu 2015-06-01 122 static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
7bbf1dd24b17b9 Jiang Liu 2015-06-01 123 {
755d119a620497 Thomas Gleixner 2015-09-16 @124 return container_of(data->common, struct irq_desc, irq_common_data);
7bbf1dd24b17b9 Jiang Liu 2015-06-01 125 }
7bbf1dd24b17b9 Jiang Liu 2015-06-01 126
304adf8a8fff97 Jiang Liu 2015-06-04 127 static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
304adf8a8fff97 Jiang Liu 2015-06-04 128 {
304adf8a8fff97 Jiang Liu 2015-06-04 129 return desc->irq_data.irq;
304adf8a8fff97 Jiang Liu 2015-06-04 130 }
304adf8a8fff97 Jiang Liu 2015-06-04 131
d9936bb3952a08 Thomas Gleixner 2011-03-11 132 static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
d9936bb3952a08 Thomas Gleixner 2011-03-11 133 {
d9936bb3952a08 Thomas Gleixner 2011-03-11 134 return &desc->irq_data;
d9936bb3952a08 Thomas Gleixner 2011-03-11 135 }
d9936bb3952a08 Thomas Gleixner 2011-03-11 136
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 137 static inline struct irq_chip *irq_desc_get_chip(struct irq_desc *desc)
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 138 {
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 139 return desc->irq_data.chip;
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 140 }
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 141
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 142 static inline void *irq_desc_get_chip_data(struct irq_desc *desc)
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 143 {
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 144 return desc->irq_data.chip_data;
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 145 }
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 146
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 147 static inline void *irq_desc_get_handler_data(struct irq_desc *desc)
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 148 {
af7080e040d223 Jiang Liu 2015-06-01 149 return desc->irq_common_data.handler_data;
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 150 }
a0cd9ca2b907d7 Thomas Gleixner 2011-02-10 151
e144710b302525 Thomas Gleixner 2010-10-01 152 /*
e144710b302525 Thomas Gleixner 2010-10-01 153 * Architectures call this to let the generic IRQ layer
6584d84c3e504c Huang Shijie 2015-09-01 154 * handle an interrupt.
e144710b302525 Thomas Gleixner 2010-10-01 155 */
bd0b9ac405e179 Thomas Gleixner 2015-09-14 156 static inline void generic_handle_irq_desc(struct irq_desc *desc)
e144710b302525 Thomas Gleixner 2010-10-01 157 {
bd0b9ac405e179 Thomas Gleixner 2015-09-14 158 desc->handle_irq(desc);
e144710b302525 Thomas Gleixner 2010-10-01 159 }
e144710b302525 Thomas Gleixner 2010-10-01 160
fe12bc2c996d3e Thomas Gleixner 2011-05-18 161 int generic_handle_irq(unsigned int irq);
e144710b302525 Thomas Gleixner 2010-10-01 162
76ba59f8366f2d Marc Zyngier 2014-08-26 163 #ifdef CONFIG_HANDLE_DOMAIN_IRQ
76ba59f8366f2d Marc Zyngier 2014-08-26 164 /*
76ba59f8366f2d Marc Zyngier 2014-08-26 165 * Convert a HW interrupt number to a logical one using a IRQ domain,
76ba59f8366f2d Marc Zyngier 2014-08-26 166 * and handle the result interrupt number. Return -EINVAL if
76ba59f8366f2d Marc Zyngier 2014-08-26 167 * conversion failed. Providing a NULL domain indicates that the
76ba59f8366f2d Marc Zyngier 2014-08-26 168 * conversion has already been done.
76ba59f8366f2d Marc Zyngier 2014-08-26 169 */
76ba59f8366f2d Marc Zyngier 2014-08-26 170 int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq,
76ba59f8366f2d Marc Zyngier 2014-08-26 171 bool lookup, struct pt_regs *regs);
76ba59f8366f2d Marc Zyngier 2014-08-26 172
76ba59f8366f2d Marc Zyngier 2014-08-26 173 static inline int handle_domain_irq(struct irq_domain *domain,
76ba59f8366f2d Marc Zyngier 2014-08-26 174 unsigned int hwirq, struct pt_regs *regs)
76ba59f8366f2d Marc Zyngier 2014-08-26 175 {
76ba59f8366f2d Marc Zyngier 2014-08-26 176 return __handle_domain_irq(domain, hwirq, true, regs);
76ba59f8366f2d Marc Zyngier 2014-08-26 177 }
6e4933a0066163 Julien Thierry 2019-01-31 178
6e4933a0066163 Julien Thierry 2019-01-31 179 #ifdef CONFIG_IRQ_DOMAIN
6e4933a0066163 Julien Thierry 2019-01-31 180 int handle_domain_nmi(struct irq_domain *domain, unsigned int hwirq,
6e4933a0066163 Julien Thierry 2019-01-31 181 struct pt_regs *regs);
6e4933a0066163 Julien Thierry 2019-01-31 182 #endif
76ba59f8366f2d Marc Zyngier 2014-08-26 183 #endif
76ba59f8366f2d Marc Zyngier 2014-08-26 184
e144710b302525 Thomas Gleixner 2010-10-01 185 /* Test to see if a driver has successfully requested an irq */
f61ae4fb66a4f7 Thomas Gleixner 2015-08-02 186 static inline int irq_desc_has_action(struct irq_desc *desc)
e144710b302525 Thomas Gleixner 2010-10-01 187 {
a313357e704f26 Thomas Gleixner 2020-12-10 188 return desc && desc->action != NULL;
f61ae4fb66a4f7 Thomas Gleixner 2015-08-02 189 }
f61ae4fb66a4f7 Thomas Gleixner 2015-08-02 190
bbc9d21fc0071c Thomas Gleixner 2015-06-23 191 /**
bbc9d21fc0071c Thomas Gleixner 2015-06-23 192 * irq_set_handler_locked - Set irq handler from a locked region
bbc9d21fc0071c Thomas Gleixner 2015-06-23 193 * @data: Pointer to the irq_data structure which identifies the irq
bbc9d21fc0071c Thomas Gleixner 2015-06-23 194 * @handler: Flow control handler function for this interrupt
bbc9d21fc0071c Thomas Gleixner 2015-06-23 195 *
bbc9d21fc0071c Thomas Gleixner 2015-06-23 196 * Sets the handler in the irq descriptor associated to @data.
bbc9d21fc0071c Thomas Gleixner 2015-06-23 197 *
bbc9d21fc0071c Thomas Gleixner 2015-06-23 198 * Must be called with irq_desc locked and valid parameters. Typical
bbc9d21fc0071c Thomas Gleixner 2015-06-23 199 * call site is the irq_set_type() callback.
bbc9d21fc0071c Thomas Gleixner 2015-06-23 200 */
bbc9d21fc0071c Thomas Gleixner 2015-06-23 201 static inline void irq_set_handler_locked(struct irq_data *data,
bbc9d21fc0071c Thomas Gleixner 2015-06-23 202 irq_flow_handler_t handler)
bbc9d21fc0071c Thomas Gleixner 2015-06-23 203 {
bbc9d21fc0071c Thomas Gleixner 2015-06-23 204 struct irq_desc *desc = irq_data_to_desc(data);
bbc9d21fc0071c Thomas Gleixner 2015-06-23 205
bbc9d21fc0071c Thomas Gleixner 2015-06-23 206 desc->handle_irq = handler;
bbc9d21fc0071c Thomas Gleixner 2015-06-23 207 }
bbc9d21fc0071c Thomas Gleixner 2015-06-23 208
bbc9d21fc0071c Thomas Gleixner 2015-06-23 209 /**
bbc9d21fc0071c Thomas Gleixner 2015-06-23 210 * irq_set_chip_handler_name_locked - Set chip, handler and name from a locked region
bbc9d21fc0071c Thomas Gleixner 2015-06-23 211 * @data: Pointer to the irq_data structure for which the chip is set
bbc9d21fc0071c Thomas Gleixner 2015-06-23 212 * @chip: Pointer to the new irq chip
bbc9d21fc0071c Thomas Gleixner 2015-06-23 213 * @handler: Flow control handler function for this interrupt
bbc9d21fc0071c Thomas Gleixner 2015-06-23 214 * @name: Name of the interrupt
bbc9d21fc0071c Thomas Gleixner 2015-06-23 215 *
bbc9d21fc0071c Thomas Gleixner 2015-06-23 216 * Replace the irq chip at the proper hierarchy level in @data and
bbc9d21fc0071c Thomas Gleixner 2015-06-23 217 * sets the handler and name in the associated irq descriptor.
bbc9d21fc0071c Thomas Gleixner 2015-06-23 218 *
bbc9d21fc0071c Thomas Gleixner 2015-06-23 219 * Must be called with irq_desc locked and valid parameters.
bbc9d21fc0071c Thomas Gleixner 2015-06-23 220 */
bbc9d21fc0071c Thomas Gleixner 2015-06-23 221 static inline void
bbc9d21fc0071c Thomas Gleixner 2015-06-23 222 irq_set_chip_handler_name_locked(struct irq_data *data, struct irq_chip *chip,
bbc9d21fc0071c Thomas Gleixner 2015-06-23 223 irq_flow_handler_t handler, const char *name)
bbc9d21fc0071c Thomas Gleixner 2015-06-23 224 {
bbc9d21fc0071c Thomas Gleixner 2015-06-23 225 struct irq_desc *desc = irq_data_to_desc(data);
bbc9d21fc0071c Thomas Gleixner 2015-06-23 226
bbc9d21fc0071c Thomas Gleixner 2015-06-23 227 desc->handle_irq = handler;
bbc9d21fc0071c Thomas Gleixner 2015-06-23 228 desc->name = name;
bbc9d21fc0071c Thomas Gleixner 2015-06-23 229 data->chip = chip;
bbc9d21fc0071c Thomas Gleixner 2015-06-23 230 }
bbc9d21fc0071c Thomas Gleixner 2015-06-23 231
fdd029630434b4 Thomas Gleixner 2020-12-10 232 bool irq_check_status_bit(unsigned int irq, unsigned int bitmask);
fdd029630434b4 Thomas Gleixner 2020-12-10 233
4ce413d1840b25 Will Deacon 2017-12-01 234 static inline bool irq_balancing_disabled(unsigned int irq)
e144710b302525 Thomas Gleixner 2010-10-01 235 {
fdd029630434b4 Thomas Gleixner 2020-12-10 @236 return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
e144710b302525 Thomas Gleixner 2010-10-01 237 }
781295762defc7 Thomas Gleixner 2011-02-10 238
4ce413d1840b25 Will Deacon 2017-12-01 239 static inline bool irq_is_percpu(unsigned int irq)
7f4a8e7b1943c1 Vinayak Kale 2013-12-04 240 {
fdd029630434b4 Thomas Gleixner 2020-12-10 @241 return irq_check_status_bit(irq, IRQ_PER_CPU);
7f4a8e7b1943c1 Vinayak Kale 2013-12-04 242 }
7f4a8e7b1943c1 Vinayak Kale 2013-12-04 243
4ce413d1840b25 Will Deacon 2017-12-01 244 static inline bool irq_is_percpu_devid(unsigned int irq)
08395c7f4d9f58 Julien Thierry 2017-10-13 245 {
fdd029630434b4 Thomas Gleixner 2020-12-10 @246 return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
08395c7f4d9f58 Julien Thierry 2017-10-13 247 }
08395c7f4d9f58 Julien Thierry 2017-10-13 248
:::::: The code at line 56 was first introduced by commit
:::::: 0d0b4c866bcce647f40d73efe5e90aeeb079050a genirq: Introduce struct irq_common_data to host shared irq data
:::::: TO: Jiang Liu <jiang.liu at linux.intel.com>
:::::: CC: Thomas Gleixner <tglx at linutronix.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 33311 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210514/07bf5ec8/attachment-0001.gz>
More information about the linux-arm-kernel
mailing list