diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2017-03-21 13:29:04 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-03-21 13:29:03 -0700 |
commit | 5a54ca071cfb6d0543920b89ddbe92a074ce3ff9 (patch) | |
tree | 543c148ce5c34e1017adbc02297cf22d32a993d1 /drivers | |
parent | 09ddd6a693ad81384fb48054c94c0f226f64c57a (diff) | |
parent | 4fa55b9ca326d7fe4bdc4663f22eea54c14f2933 (diff) |
Merge "drivers: GICv3: Check IRQ state in gic_set_affinity()"
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/irqchip/irq-gic-v3.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index c40a9f3b0724..4ff2ee2609ca 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -804,6 +804,14 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, gic_write_irouter(val, reg); /* + * It is possible that irq is disabled from SW perspective only, + * because kernel takes lazy disable approach. Therefore check irq + * descriptor if it should kept disabled. + */ + if (irqd_irq_disabled(d)) + enabled = 0; + + /* * If the interrupt was enabled, enabled it again. Otherwise, * just wait for the distributor to have digested our changes. */ |