diff options
author | Jiang Liu <jiang.liu@linux.intel.com> | 2015-06-02 23:47:50 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2015-09-16 09:46:49 -0400 |
commit | 9df872faa7e1619e9278bec00ceaed2236533530 (patch) | |
tree | 5bb92dc5edab31e25e1ed8c6520cad707186408a /kernel | |
parent | af7080e040d223b5e7d0a8de28f7cea24ef017c4 (diff) |
genirq: Move field 'affinity' from irq_data into irq_common_data
Irq affinity mask is per-irq instead of per irqchip, so move it into
struct irq_common_data.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Kevin Cernekee <cernekee@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Link: http://lkml.kernel.org/r/1433303281-27688-1-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/irq/irqdesc.c | 9 | ||||
-rw-r--r-- | kernel/irq/manage.c | 12 | ||||
-rw-r--r-- | kernel/irq/proc.c | 2 |
3 files changed, 12 insertions, 11 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 594b3e349aac..bb48a5c1964e 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c | |||
@@ -38,12 +38,13 @@ static void __init init_irq_default_affinity(void) | |||
38 | #ifdef CONFIG_SMP | 38 | #ifdef CONFIG_SMP |
39 | static int alloc_masks(struct irq_desc *desc, gfp_t gfp, int node) | 39 | static int alloc_masks(struct irq_desc *desc, gfp_t gfp, int node) |
40 | { | 40 | { |
41 | if (!zalloc_cpumask_var_node(&desc->irq_data.affinity, gfp, node)) | 41 | if (!zalloc_cpumask_var_node(&desc->irq_common_data.affinity, |
42 | gfp, node)) | ||
42 | return -ENOMEM; | 43 | return -ENOMEM; |
43 | 44 | ||
44 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 45 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
45 | if (!zalloc_cpumask_var_node(&desc->pending_mask, gfp, node)) { | 46 | if (!zalloc_cpumask_var_node(&desc->pending_mask, gfp, node)) { |
46 | free_cpumask_var(desc->irq_data.affinity); | 47 | free_cpumask_var(desc->irq_common_data.affinity); |
47 | return -ENOMEM; | 48 | return -ENOMEM; |
48 | } | 49 | } |
49 | #endif | 50 | #endif |
@@ -52,7 +53,7 @@ static int alloc_masks(struct irq_desc *desc, gfp_t gfp, int node) | |||
52 | 53 | ||
53 | static void desc_smp_init(struct irq_desc *desc, int node) | 54 | static void desc_smp_init(struct irq_desc *desc, int node) |
54 | { | 55 | { |
55 | cpumask_copy(desc->irq_data.affinity, irq_default_affinity); | 56 | cpumask_copy(desc->irq_common_data.affinity, irq_default_affinity); |
56 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 57 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
57 | cpumask_clear(desc->pending_mask); | 58 | cpumask_clear(desc->pending_mask); |
58 | #endif | 59 | #endif |
@@ -124,7 +125,7 @@ static void free_masks(struct irq_desc *desc) | |||
124 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 125 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
125 | free_cpumask_var(desc->pending_mask); | 126 | free_cpumask_var(desc->pending_mask); |
126 | #endif | 127 | #endif |
127 | free_cpumask_var(desc->irq_data.affinity); | 128 | free_cpumask_var(desc->irq_common_data.affinity); |
128 | } | 129 | } |
129 | #else | 130 | #else |
130 | static inline void free_masks(struct irq_desc *desc) { } | 131 | static inline void free_masks(struct irq_desc *desc) { } |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index ad1b064f94fe..f9a59f6cabd2 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -192,7 +192,7 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask, | |||
192 | switch (ret) { | 192 | switch (ret) { |
193 | case IRQ_SET_MASK_OK: | 193 | case IRQ_SET_MASK_OK: |
194 | case IRQ_SET_MASK_OK_DONE: | 194 | case IRQ_SET_MASK_OK_DONE: |
195 | cpumask_copy(data->affinity, mask); | 195 | cpumask_copy(desc->irq_common_data.affinity, mask); |
196 | case IRQ_SET_MASK_OK_NOCOPY: | 196 | case IRQ_SET_MASK_OK_NOCOPY: |
197 | irq_set_thread_affinity(desc); | 197 | irq_set_thread_affinity(desc); |
198 | ret = 0; | 198 | ret = 0; |
@@ -304,7 +304,7 @@ static void irq_affinity_notify(struct work_struct *work) | |||
304 | if (irq_move_pending(&desc->irq_data)) | 304 | if (irq_move_pending(&desc->irq_data)) |
305 | irq_get_pending(cpumask, desc); | 305 | irq_get_pending(cpumask, desc); |
306 | else | 306 | else |
307 | cpumask_copy(cpumask, desc->irq_data.affinity); | 307 | cpumask_copy(cpumask, desc->irq_common_data.affinity); |
308 | raw_spin_unlock_irqrestore(&desc->lock, flags); | 308 | raw_spin_unlock_irqrestore(&desc->lock, flags); |
309 | 309 | ||
310 | notify->notify(notify, cpumask); | 310 | notify->notify(notify, cpumask); |
@@ -375,9 +375,9 @@ static int setup_affinity(struct irq_desc *desc, struct cpumask *mask) | |||
375 | * one of the targets is online. | 375 | * one of the targets is online. |
376 | */ | 376 | */ |
377 | if (irqd_has_set(&desc->irq_data, IRQD_AFFINITY_SET)) { | 377 | if (irqd_has_set(&desc->irq_data, IRQD_AFFINITY_SET)) { |
378 | if (cpumask_intersects(desc->irq_data.affinity, | 378 | if (cpumask_intersects(desc->irq_common_data.affinity, |
379 | cpu_online_mask)) | 379 | cpu_online_mask)) |
380 | set = desc->irq_data.affinity; | 380 | set = desc->irq_common_data.affinity; |
381 | else | 381 | else |
382 | irqd_clear(&desc->irq_data, IRQD_AFFINITY_SET); | 382 | irqd_clear(&desc->irq_data, IRQD_AFFINITY_SET); |
383 | } | 383 | } |
@@ -829,8 +829,8 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) | |||
829 | * This code is triggered unconditionally. Check the affinity | 829 | * This code is triggered unconditionally. Check the affinity |
830 | * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out. | 830 | * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out. |
831 | */ | 831 | */ |
832 | if (desc->irq_data.affinity) | 832 | if (desc->irq_common_data.affinity) |
833 | cpumask_copy(mask, desc->irq_data.affinity); | 833 | cpumask_copy(mask, desc->irq_common_data.affinity); |
834 | else | 834 | else |
835 | valid = false; | 835 | valid = false; |
836 | raw_spin_unlock_irq(&desc->lock); | 836 | raw_spin_unlock_irq(&desc->lock); |
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index 0e97c142ce40..e3a8c9577ba6 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c | |||
@@ -39,7 +39,7 @@ static struct proc_dir_entry *root_irq_dir; | |||
39 | static int show_irq_affinity(int type, struct seq_file *m, void *v) | 39 | static int show_irq_affinity(int type, struct seq_file *m, void *v) |
40 | { | 40 | { |
41 | struct irq_desc *desc = irq_to_desc((long)m->private); | 41 | struct irq_desc *desc = irq_to_desc((long)m->private); |
42 | const struct cpumask *mask = desc->irq_data.affinity; | 42 | const struct cpumask *mask = desc->irq_common_data.affinity; |
43 | 43 | ||
44 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 44 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
45 | if (irqd_is_setaffinity_pending(&desc->irq_data)) | 45 | if (irqd_is_setaffinity_pending(&desc->irq_data)) |