[patch 1/4] Use platform numbering of cpus for hypervisor calls
nathanl at austin.ibm.com
nathanl at austin.ibm.com
Wed Aug 4 09:18:28 EST 2004
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 at austin.ibm.com>
---
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
}
_
** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc64-dev
mailing list