diff options
| -rw-r--r-- | arch/x86/Kconfig | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 2 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 5 |
3 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c9086e6307a5..4627df19a941 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -277,6 +277,7 @@ config SPARSE_IRQ | |||
| 277 | config NUMA_MIGRATE_IRQ_DESC | 277 | config NUMA_MIGRATE_IRQ_DESC |
| 278 | bool "Move irq desc when changing irq smp_affinity" | 278 | bool "Move irq desc when changing irq smp_affinity" |
| 279 | depends on SPARSE_IRQ && NUMA | 279 | depends on SPARSE_IRQ && NUMA |
| 280 | depends on BROKEN | ||
| 280 | default n | 281 | default n |
| 281 | ---help--- | 282 | ---help--- |
| 282 | This enables moving irq_desc to cpu/node that irq will use handled. | 283 | This enables moving irq_desc to cpu/node that irq will use handled. |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index a2789e42e162..30da617d18e4 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
| @@ -3670,12 +3670,14 @@ int arch_setup_hpet_msi(unsigned int irq) | |||
| 3670 | { | 3670 | { |
| 3671 | int ret; | 3671 | int ret; |
| 3672 | struct msi_msg msg; | 3672 | struct msi_msg msg; |
| 3673 | struct irq_desc *desc = irq_to_desc(irq); | ||
| 3673 | 3674 | ||
| 3674 | ret = msi_compose_msg(NULL, irq, &msg); | 3675 | ret = msi_compose_msg(NULL, irq, &msg); |
| 3675 | if (ret < 0) | 3676 | if (ret < 0) |
| 3676 | return ret; | 3677 | return ret; |
| 3677 | 3678 | ||
| 3678 | hpet_msi_write(irq, &msg); | 3679 | hpet_msi_write(irq, &msg); |
| 3680 | desc->status |= IRQ_MOVE_PCNTXT; | ||
| 3679 | set_irq_chip_and_handler_name(irq, &hpet_msi_type, handle_edge_irq, | 3681 | set_irq_chip_and_handler_name(irq, &hpet_msi_type, handle_edge_irq, |
| 3680 | "edge"); | 3682 | "edge"); |
| 3681 | 3683 | ||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 7e2e7dd4cd2f..2734eca59243 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -109,10 +109,9 @@ int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask) | |||
| 109 | spin_lock_irqsave(&desc->lock, flags); | 109 | spin_lock_irqsave(&desc->lock, flags); |
| 110 | 110 | ||
| 111 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 111 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
| 112 | if (desc->status & IRQ_MOVE_PCNTXT || desc->status & IRQ_DISABLED) { | 112 | if (desc->status & IRQ_MOVE_PCNTXT) |
| 113 | cpumask_copy(desc->affinity, cpumask); | ||
| 114 | desc->chip->set_affinity(irq, cpumask); | 113 | desc->chip->set_affinity(irq, cpumask); |
| 115 | } else { | 114 | else { |
| 116 | desc->status |= IRQ_MOVE_PENDING; | 115 | desc->status |= IRQ_MOVE_PENDING; |
| 117 | cpumask_copy(desc->pending_mask, cpumask); | 116 | cpumask_copy(desc->pending_mask, cpumask); |
| 118 | } | 117 | } |
