]> git.hungrycats.org Git - linux/commitdiff
[PATCH] cpumask updates in open_pic.c (ppc)
authorAlexander Viro <viro@www.linux.org.uk>
Mon, 26 Jul 2004 14:04:59 +0000 (07:04 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 26 Jul 2004 14:04:59 +0000 (07:04 -0700)
compile fixes in open_pic.c - it missed cpumask conversion in several
places.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc/syslib/open_pic.c
include/asm-ppc/open_pic.h

index 975a4fc0ce24a151979e0a2e2a6afeec248a39b1..a19f8c2d933eb79095e68f815850c57c1d02d28e 100644 (file)
@@ -554,14 +554,16 @@ static void __init openpic_initipi(u_int ipi, u_int pri, u_int vec)
  *  Externally called, however, it takes an IPI number (0...OPENPIC_NUM_IPI)
  *  and not a system-wide interrupt number
  */
-void openpic_cause_IPI(u_int ipi, u_int cpumask)
+void openpic_cause_IPI(u_int ipi, cpumask_t cpumask)
 {
+       cpumask_t phys;
        DECL_THIS_CPU;
 
        CHECK_THIS_CPU;
        check_arg_ipi(ipi);
+       phys = physmask(cpumask);
        openpic_write(&OpenPIC->THIS_CPU.IPI_Dispatch(ipi),
-                     physmask(cpumask));
+                     cpus_addr(physmask(cpumask))[0]);
 }
 
 void openpic_request_IPIs(void)
@@ -610,7 +612,7 @@ void __devinit do_openpic_setup_cpu(void)
        spin_lock(&openpic_setup_lock);
 
 #ifdef CONFIG_IRQ_ALL_CPUS
-       cpu_set(smp_hw_index[smp_processor_id()], mask);
+       cpu_set(smp_hw_index[smp_processor_id()], msk);
 
        /* let the openpic know we want intrs. default affinity
         * is 0xffffffff until changed via /proc
@@ -872,6 +874,7 @@ openpic_get_irq(struct pt_regs *regs)
 void
 smp_openpic_message_pass(int target, int msg, unsigned long data, int wait)
 {
+       cpumask_t mask = CPU_MASK_ALL;
        /* make sure we're sending something that translates to an IPI */
        if (msg > 0x3) {
                printk("SMP %d: smp_message_pass: unknown msg %d\n",
@@ -880,14 +883,14 @@ smp_openpic_message_pass(int target, int msg, unsigned long data, int wait)
        }
        switch (target) {
        case MSG_ALL:
-               openpic_cause_IPI(msg, 0xffffffff);
+               openpic_cause_IPI(msg, mask);
                break;
        case MSG_ALL_BUT_SELF:
-               openpic_cause_IPI(msg,
-                                 0xffffffff & ~(1 << smp_processor_id()));
+               cpu_clear(smp_processor_id(), mask);
+               openpic_cause_IPI(msg, mask);
                break;
        default:
-               openpic_cause_IPI(msg, 1<<target);
+               openpic_cause_IPI(msg, cpumask_of_cpu(target));
                break;
        }
 }
index df14f8650ab03937c0daef6c573778f66096cd29..38d8edb1ba7066fd5265669b83e652fc303f3ae4 100644 (file)
@@ -50,7 +50,7 @@ extern void do_openpic_setup_cpu(void);
 extern int openpic_get_irq(struct pt_regs *regs);
 extern void openpic_reset_processor_phys(u_int cpumask);
 extern void openpic_setup_ISU(int isu_num, unsigned long addr);
-extern void openpic_cause_IPI(u_int ipi, u_int cpumask);
+extern void openpic_cause_IPI(u_int ipi, cpumask_t cpumask);
 extern void smp_openpic_message_pass(int target, int msg, unsigned long data,
                                     int wait);
 extern void openpic_set_k2_cascade(int irq);