diff options
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 30658e9827f0..ad0aac6d1248 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -353,10 +353,11 @@ static int setup_affinity(struct irq_desc *desc, struct cpumask *mask) | |||
353 | return 0; | 353 | return 0; |
354 | 354 | ||
355 | /* | 355 | /* |
356 | * Preserve an userspace affinity setup, but make sure that | 356 | * Preserve the managed affinity setting and an userspace affinity |
357 | * one of the targets is online. | 357 | * setup, but make sure that one of the targets is online. |
358 | */ | 358 | */ |
359 | if (irqd_has_set(&desc->irq_data, IRQD_AFFINITY_SET)) { | 359 | if (irqd_affinity_is_managed(&desc->irq_data) || |
360 | irqd_has_set(&desc->irq_data, IRQD_AFFINITY_SET)) { | ||
360 | if (cpumask_intersects(desc->irq_common_data.affinity, | 361 | if (cpumask_intersects(desc->irq_common_data.affinity, |
361 | cpu_online_mask)) | 362 | cpu_online_mask)) |
362 | set = desc->irq_common_data.affinity; | 363 | set = desc->irq_common_data.affinity; |