[PATCH] PPC64 update irq affinity mask when migrating irqs

From: Paul Mackerras
Date: Tue Mar 08 2005 - 04:59:14 EST


This patch is from Nathan Lynch <ntl@xxxxxxxxx>.

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@xxxxxxxxx>
Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx>

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);
}
-
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/