Commit fc2e3180 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'irq-fixes-for-linus' of...

Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86/irq: mark NUMA_MIGRATE_IRQ_DESC broken
  x86, irq: Remove IRQ_DISABLED check in process context IRQ move
parents 1e4b9781 ca713c2a
...@@ -277,6 +277,7 @@ config SPARSE_IRQ ...@@ -277,6 +277,7 @@ config SPARSE_IRQ
config NUMA_MIGRATE_IRQ_DESC config NUMA_MIGRATE_IRQ_DESC
bool "Move irq desc when changing irq smp_affinity" bool "Move irq desc when changing irq smp_affinity"
depends on SPARSE_IRQ && NUMA depends on SPARSE_IRQ && NUMA
depends on BROKEN
default n default n
---help--- ---help---
This enables moving irq_desc to cpu/node that irq will use handled. This enables moving irq_desc to cpu/node that irq will use handled.
......
...@@ -3670,12 +3670,14 @@ int arch_setup_hpet_msi(unsigned int irq) ...@@ -3670,12 +3670,14 @@ int arch_setup_hpet_msi(unsigned int irq)
{ {
int ret; int ret;
struct msi_msg msg; struct msi_msg msg;
struct irq_desc *desc = irq_to_desc(irq);
ret = msi_compose_msg(NULL, irq, &msg); ret = msi_compose_msg(NULL, irq, &msg);
if (ret < 0) if (ret < 0)
return ret; return ret;
hpet_msi_write(irq, &msg); hpet_msi_write(irq, &msg);
desc->status |= IRQ_MOVE_PCNTXT;
set_irq_chip_and_handler_name(irq, &hpet_msi_type, handle_edge_irq, set_irq_chip_and_handler_name(irq, &hpet_msi_type, handle_edge_irq,
"edge"); "edge");
......
...@@ -109,10 +109,9 @@ int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask) ...@@ -109,10 +109,9 @@ int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask)
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
#ifdef CONFIG_GENERIC_PENDING_IRQ #ifdef CONFIG_GENERIC_PENDING_IRQ
if (desc->status & IRQ_MOVE_PCNTXT || desc->status & IRQ_DISABLED) { if (desc->status & IRQ_MOVE_PCNTXT)
cpumask_copy(desc->affinity, cpumask);
desc->chip->set_affinity(irq, cpumask); desc->chip->set_affinity(irq, cpumask);
} else { else {
desc->status |= IRQ_MOVE_PENDING; desc->status |= IRQ_MOVE_PENDING;
cpumask_copy(desc->pending_mask, cpumask); cpumask_copy(desc->pending_mask, cpumask);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment