[PATCH] update irq affinity mask when migrating irqs
Nathan Lynch
ntl at pobox.com
Tue Mar 8 13:00:17 EST 2005
When offlining a cpu, any device interrupts which are bound to the cpu
have their affinity forcibly reset to all cpus (the default).
However, the value in /proc/irq/XXX/smp_affinity remains unchanged.
Since we're doing this while all the other cpus are stopped, it should
be safe to just call desc->handler->set_affinity and manually update
the irq_affinity array.
Signed-off-by: Nathan Lynch <ntl at pobox.com>
xics.c | 11 ++---------
1 files changed, 2 insertions(+), 9 deletions(-)
Index: linux-2.6.11-bk2/arch/ppc64/kernel/xics.c
===================================================================
--- linux-2.6.11-bk2.orig/arch/ppc64/kernel/xics.c 2005-03-02 07:38:10.000000000 +0000
+++ linux-2.6.11-bk2/arch/ppc64/kernel/xics.c 2005-03-07 03:52:08.000000000 +0000
@@ -704,15 +704,8 @@ void xics_migrate_irqs_away(void)
virq, cpu);
/* Reset affinity to all cpus */
- xics_status[0] = default_distrib_server;
-
- status = rtas_call(ibm_set_xive, 3, 1, NULL, irq,
- xics_status[0], xics_status[1]);
- if (status)
- printk(KERN_ERR "migrate_irqs_away: irq=%d "
- "ibm,set-xive returns %d\n",
- virq, status);
-
+ desc->handler->set_affinity(virq, CPU_MASK_ALL);
+ irq_affinity[virq] = CPU_MASK_ALL;
unlock:
spin_unlock_irqrestore(&desc->lock, flags);
}
More information about the Linuxppc64-dev
mailing list