diff options
-rw-r--r-- | include/linux/irq.h | 4 | ||||
-rw-r--r-- | kernel/irq/manage.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index d58e58935465..566b1e541323 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -114,10 +114,14 @@ enum { | |||
114 | * | 114 | * |
115 | * IRQ_SET_MASK_OK - OK, core updates irq_data.affinity | 115 | * IRQ_SET_MASK_OK - OK, core updates irq_data.affinity |
116 | * IRQ_SET_MASK_NOCPY - OK, chip did update irq_data.affinity | 116 | * IRQ_SET_MASK_NOCPY - OK, chip did update irq_data.affinity |
117 | * IRQ_SET_MASK_OK_DONE - Same as IRQ_SET_MASK_OK for core. Special code to | ||
118 | * support stacked irqchips, which indicates skipping | ||
119 | * all descendent irqchips. | ||
117 | */ | 120 | */ |
118 | enum { | 121 | enum { |
119 | IRQ_SET_MASK_OK = 0, | 122 | IRQ_SET_MASK_OK = 0, |
120 | IRQ_SET_MASK_OK_NOCOPY, | 123 | IRQ_SET_MASK_OK_NOCOPY, |
124 | IRQ_SET_MASK_OK_DONE, | ||
121 | }; | 125 | }; |
122 | 126 | ||
123 | struct msi_desc; | 127 | struct msi_desc; |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 0a9104b4608b..80692373abd6 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -183,6 +183,7 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask, | |||
183 | ret = chip->irq_set_affinity(data, mask, force); | 183 | ret = chip->irq_set_affinity(data, mask, force); |
184 | switch (ret) { | 184 | switch (ret) { |
185 | case IRQ_SET_MASK_OK: | 185 | case IRQ_SET_MASK_OK: |
186 | case IRQ_SET_MASK_OK_DONE: | ||
186 | cpumask_copy(data->affinity, mask); | 187 | cpumask_copy(data->affinity, mask); |
187 | case IRQ_SET_MASK_OK_NOCOPY: | 188 | case IRQ_SET_MASK_OK_NOCOPY: |
188 | irq_set_thread_affinity(desc); | 189 | irq_set_thread_affinity(desc); |
@@ -600,6 +601,7 @@ int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, | |||
600 | 601 | ||
601 | switch (ret) { | 602 | switch (ret) { |
602 | case IRQ_SET_MASK_OK: | 603 | case IRQ_SET_MASK_OK: |
604 | case IRQ_SET_MASK_OK_DONE: | ||
603 | irqd_clear(&desc->irq_data, IRQD_TRIGGER_MASK); | 605 | irqd_clear(&desc->irq_data, IRQD_TRIGGER_MASK); |
604 | irqd_set(&desc->irq_data, flags); | 606 | irqd_set(&desc->irq_data, flags); |
605 | 607 | ||