Re: [PATCH 2/3] [BUGFIX] x86/x86_64: fix CPU offlining triggered inactive device IRQ interrruption

From: Eric W. Biederman
Date: Sat Apr 11 2009 - 07:02:11 EST


Yinghai Lu <yhlu.kernel@xxxxxxxxx> writes:

> commit 932775a4ab622e3c99bd59f14cc7d96722f79501
> Author: venkatesh.pallipadi@xxxxxxxxx <venkatesh.pallipadi@xxxxxxxxx>
> Date: Fri Sep 5 18:02:15 2008 -0700
>
> x86: HPET_MSI change IRQ affinity in process context when it is disabled
>
> Change the IRQ affinity in the process context when the IRQ is disabled.
>
> Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx>
> Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
>
> diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
> index ddc9568..ad2ce72 100644
> --- a/kernel/irq/manage.c
> +++ b/kernel/irq/manage.c
> @@ -87,10 +87,11 @@ int irq_set_affinity(unsigned int irq, cpumask_t cpumask)
> return -EINVAL;
>
> #ifdef CONFIG_GENERIC_PENDING_IRQ
> - if (desc->status & IRQ_MOVE_PCNTXT) {
> + if (desc->status & IRQ_MOVE_PCNTXT || desc->status & IRQ_DISABLED) {
> unsigned long flags;
>
> spin_lock_irqsave(&desc->lock, flags);
> + desc->affinity = cpumask;
> desc->chip->set_affinity(irq, cpumask);
> spin_unlock_irqrestore(&desc->lock, flags);
> } else

If the goal is moving MSIs, we should modify the msi code to be safe
in process context and to set IRQ_MOVE_PCNTXT.

The only reason we migrate MSIs in interrupt context today is that there
wasn't infrastructure for support migration both in interrupt context
and outside of it.

Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/