[PATCH] PPC64 (1/4) Use platform numbering of cpus for hypervisor calls.

From: Paul Mackerras
Date: Fri Aug 13 2004 - 00:08:25 EST


We were using Linux's cpu numbering for cpu-related hypervisor calls
(e.g. vpa registration, H_CONFER). It happened to work most of the
time because Linux and the hypervisor usually, but not always, have
the same numbering for cpus.

Signed-off-by: Nathan Lynch <nathanl@xxxxxxxxxxxxxx>
Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx>

diff -puN arch/ppc64/kernel/smp.c~ppc64_fix_hcall_cpuids arch/ppc64/kernel/smp.c
--- 2.6-tip/arch/ppc64/kernel/smp.c~ppc64_fix_hcall_cpuids 2004-08-03 18:06:53.000000000 -0500
+++ 2.6-tip-nathanl/arch/ppc64/kernel/smp.c 2004-08-03 18:06:53.000000000 -0500
@@ -487,11 +487,11 @@ static void __init smp_space_timers(unsi
#ifdef CONFIG_PPC_PSERIES
void vpa_init(int cpu)
{
- unsigned long flags;
+ unsigned long flags, pcpu = get_hard_smp_processor_id(cpu);

/* Register the Virtual Processor Area (VPA) */
flags = 1UL << (63 - 18);
- register_vpa(flags, cpu, __pa((unsigned long)&(paca[cpu].lppaca)));
+ register_vpa(flags, pcpu, __pa((unsigned long)&(paca[cpu].lppaca)));
}

static inline void smp_xics_do_message(int cpu, int msg)
diff -puN arch/ppc64/lib/locks.c~ppc64_fix_hcall_cpuids arch/ppc64/lib/locks.c
--- 2.6-tip/arch/ppc64/lib/locks.c~ppc64_fix_hcall_cpuids 2004-08-03 18:06:53.000000000 -0500
+++ 2.6-tip-nathanl/arch/ppc64/lib/locks.c 2004-08-03 18:06:53.000000000 -0500
@@ -63,7 +63,8 @@ void __spin_yield(spinlock_t *lock)
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
((u64)holder_cpu << 32) | yield_count);
#else
- plpar_hcall_norets(H_CONFER, holder_cpu, yield_count);
+ plpar_hcall_norets(H_CONFER, get_hard_smp_processor_id(holder_cpu),
+ yield_count);
#endif
}

@@ -179,7 +180,8 @@ void __rw_yield(rwlock_t *rw)
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
((u64)holder_cpu << 32) | yield_count);
#else
- plpar_hcall_norets(H_CONFER, holder_cpu, yield_count);
+ plpar_hcall_norets(H_CONFER, get_hard_smp_processor_id(holder_cpu),
+ yield_count);
#endif
}

-
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/