[arm-platforms:irq/domain_cleanup 14/20] include/linux/irqdesc.h:56:25: error: field 'irq_common_data' has incomplete type
kernel test robot
lkp at intel.com
Fri May 14 02:08:00 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-m031-20210514 (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.0
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/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=gcc-9.3.0 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 include/linux/irqdomain.h:35,
from arch/mips/include/asm/irq.h:14,
from include/linux/irq.h:23,
from include/asm-generic/hardirq.h:17,
from arch/mips/include/asm/hardirq.h:16,
from include/linux/hardirq.h:11,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from include/linux/swap.h:9,
from include/linux/suspend.h:5,
from arch/mips/kernel/asm-offsets.c:17:
>> include/linux/irqdesc.h:56:25: error: field 'irq_common_data' has incomplete type
56 | struct irq_common_data irq_common_data;
| ^~~~~~~~~~~~~~~
>> include/linux/irqdesc.h:57:19: error: field 'irq_data' has incomplete type
57 | struct irq_data irq_data;
| ^~~~~~~~
>> include/linux/irqdesc.h:113:33: error: 'NR_IRQS' undeclared here (not in a function)
113 | extern struct irq_desc irq_desc[NR_IRQS];
| ^~~~~~~
In file included from include/linux/list.h:9,
from include/linux/smp.h:12,
from arch/mips/include/asm/cpu-type.h:12,
from arch/mips/include/asm/timex.h:19,
from include/linux/timex.h:65,
from include/linux/time32.h:13,
from include/linux/time.h:60,
from include/linux/compat.h:10,
from arch/mips/kernel/asm-offsets.c:12:
include/linux/irqdesc.h: In function 'irq_data_to_desc':
>> include/linux/irqdesc.h:124:26: error: dereferencing pointer to incomplete type 'struct irq_data'
124 | return container_of(data->common, struct irq_desc, irq_common_data);
| ^~
include/linux/kernel.h:703:26: note: in definition of macro 'container_of'
703 | void *__mptr = (void *)(ptr); \
| ^~~
In file included from include/linux/irqdomain.h:35,
from arch/mips/include/asm/irq.h:14,
from include/linux/irq.h:23,
from include/asm-generic/hardirq.h:17,
from arch/mips/include/asm/hardirq.h:16,
from include/linux/hardirq.h:11,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from include/linux/swap.h:9,
from include/linux/suspend.h:5,
from arch/mips/kernel/asm-offsets.c:17:
include/linux/irqdesc.h: In function 'irq_balancing_disabled':
>> include/linux/irqdesc.h:236:35: error: 'IRQ_NO_BALANCING_MASK' undeclared (first use in this function)
236 | return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/irqdesc.h:236:35: note: each undeclared identifier is reported only once for each function it appears in
include/linux/irqdesc.h: In function 'irq_is_percpu':
>> include/linux/irqdesc.h:241:35: error: 'IRQ_PER_CPU' undeclared (first use in this function)
241 | return irq_check_status_bit(irq, IRQ_PER_CPU);
| ^~~~~~~~~~~
include/linux/irqdesc.h: In function 'irq_is_percpu_devid':
>> include/linux/irqdesc.h:246:35: error: 'IRQ_PER_CPU_DEVID' undeclared (first use in this function)
246 | return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c: At top level:
arch/mips/kernel/asm-offsets.c:26:6: warning: no previous prototype for 'output_ptreg_defines' [-Wmissing-prototypes]
26 | void output_ptreg_defines(void)
| ^~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:78:6: warning: no previous prototype for 'output_task_defines' [-Wmissing-prototypes]
78 | void output_task_defines(void)
| ^~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:93:6: warning: no previous prototype for 'output_thread_info_defines' [-Wmissing-prototypes]
93 | void output_thread_info_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:109:6: warning: no previous prototype for 'output_thread_defines' [-Wmissing-prototypes]
109 | void output_thread_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:137:6: warning: no previous prototype for 'output_thread_fpu_defines' [-Wmissing-prototypes]
137 | void output_thread_fpu_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:180:6: warning: no previous prototype for 'output_mm_defines' [-Wmissing-prototypes]
180 | void output_mm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:219:6: warning: no previous prototype for 'output_sc_defines' [-Wmissing-prototypes]
219 | void output_sc_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:254:6: warning: no previous prototype for 'output_signal_defined' [-Wmissing-prototypes]
254 | void output_signal_defined(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:333:6: warning: no previous prototype for 'output_pm_defines' [-Wmissing-prototypes]
333 | void output_pm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:347:6: warning: no previous prototype for 'output_kvm_defines' [-Wmissing-prototypes]
347 | void output_kvm_defines(void)
| ^~~~~~~~~~~~~~~~~~
--
In file included from include/linux/irqdomain.h:35,
from arch/mips/include/asm/irq.h:14,
from include/linux/irq.h:23,
from include/asm-generic/hardirq.h:17,
from arch/mips/include/asm/hardirq.h:16,
from include/linux/hardirq.h:11,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from include/linux/swap.h:9,
from include/linux/suspend.h:5,
from arch/mips/kernel/asm-offsets.c:17:
>> include/linux/irqdesc.h:56:25: error: field 'irq_common_data' has incomplete type
56 | struct irq_common_data irq_common_data;
| ^~~~~~~~~~~~~~~
>> include/linux/irqdesc.h:57:19: error: field 'irq_data' has incomplete type
57 | struct irq_data irq_data;
| ^~~~~~~~
>> include/linux/irqdesc.h:113:33: error: 'NR_IRQS' undeclared here (not in a function)
113 | extern struct irq_desc irq_desc[NR_IRQS];
| ^~~~~~~
In file included from include/linux/list.h:9,
from include/linux/smp.h:12,
from arch/mips/include/asm/cpu-type.h:12,
from arch/mips/include/asm/timex.h:19,
from include/linux/timex.h:65,
from include/linux/time32.h:13,
from include/linux/time.h:60,
from include/linux/compat.h:10,
from arch/mips/kernel/asm-offsets.c:12:
include/linux/irqdesc.h: In function 'irq_data_to_desc':
>> include/linux/irqdesc.h:124:26: error: dereferencing pointer to incomplete type 'struct irq_data'
124 | return container_of(data->common, struct irq_desc, irq_common_data);
| ^~
include/linux/kernel.h:703:26: note: in definition of macro 'container_of'
703 | void *__mptr = (void *)(ptr); \
| ^~~
In file included from include/linux/irqdomain.h:35,
from arch/mips/include/asm/irq.h:14,
from include/linux/irq.h:23,
from include/asm-generic/hardirq.h:17,
from arch/mips/include/asm/hardirq.h:16,
from include/linux/hardirq.h:11,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from include/linux/swap.h:9,
from include/linux/suspend.h:5,
from arch/mips/kernel/asm-offsets.c:17:
include/linux/irqdesc.h: In function 'irq_balancing_disabled':
>> include/linux/irqdesc.h:236:35: error: 'IRQ_NO_BALANCING_MASK' undeclared (first use in this function)
236 | return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/irqdesc.h:236:35: note: each undeclared identifier is reported only once for each function it appears in
include/linux/irqdesc.h: In function 'irq_is_percpu':
>> include/linux/irqdesc.h:241:35: error: 'IRQ_PER_CPU' undeclared (first use in this function)
241 | return irq_check_status_bit(irq, IRQ_PER_CPU);
| ^~~~~~~~~~~
include/linux/irqdesc.h: In function 'irq_is_percpu_devid':
>> include/linux/irqdesc.h:246:35: error: 'IRQ_PER_CPU_DEVID' undeclared (first use in this function)
246 | return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c: At top level:
arch/mips/kernel/asm-offsets.c:26:6: warning: no previous prototype for 'output_ptreg_defines' [-Wmissing-prototypes]
26 | void output_ptreg_defines(void)
| ^~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:78:6: warning: no previous prototype for 'output_task_defines' [-Wmissing-prototypes]
78 | void output_task_defines(void)
| ^~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:93:6: warning: no previous prototype for 'output_thread_info_defines' [-Wmissing-prototypes]
93 | void output_thread_info_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:109:6: warning: no previous prototype for 'output_thread_defines' [-Wmissing-prototypes]
109 | void output_thread_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:137:6: warning: no previous prototype for 'output_thread_fpu_defines' [-Wmissing-prototypes]
137 | void output_thread_fpu_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:180:6: warning: no previous prototype for 'output_mm_defines' [-Wmissing-prototypes]
180 | void output_mm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:219:6: warning: no previous prototype for 'output_sc_defines' [-Wmissing-prototypes]
219 | void output_sc_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:254:6: warning: no previous prototype for 'output_signal_defined' [-Wmissing-prototypes]
254 | void output_signal_defined(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:333:6: warning: no previous prototype for 'output_pm_defines' [-Wmissing-prototypes]
333 | void output_pm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:347:6: warning: no previous prototype for 'output_kvm_defines' [-Wmissing-prototypes]
347 | void output_kvm_defines(void)
| ^~~~~~~~~~~~~~~~~~
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 'prepare' not remade because of errors.
make: *** [Makefile:215: __sub-make] Error 2
make: Target 'prepare' not remade because of errors.
vim +/irq_common_data +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: 31542 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210514/49477107/attachment-0001.gz>
More information about the linux-arm-kernel
mailing list