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
This commit is contained in:
commit
fc2e3180a7
3 changed files with 5 additions and 3 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue