Skip to content

Commit

Permalink
powerpc: Cleanup vpa code
Browse files Browse the repository at this point in the history
register_vpa() doesn't actually do a VPA register call it just uses the flags
you pass it, so rename it to vpa_call() to be clearer.

We can then define register_vpa() and unregister_vpa() which are both simple
wrappers around vpa_call(). (we'll need unregister_vpa() for kexec soon)

We can then cleanup vpa_init(), and because vpa_init() is only called from
platforms/pseries we remove the definition in asm-ppc64/smp.h.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
  • Loading branch information
Michael Ellerman committed Nov 3, 2005
1 parent c87ef11 commit 40765d2
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 18 deletions.
10 changes: 3 additions & 7 deletions arch/powerpc/platforms/pseries/lpar.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,22 +261,18 @@ int find_udbg_vterm(void)
void vpa_init(int cpu)
{
int hwcpu = get_hard_smp_processor_id(cpu);
unsigned long vpa = (unsigned long)&(paca[cpu].lppaca);
unsigned long vpa = __pa(&paca[cpu].lppaca);
long ret;
unsigned long flags;

/* Register the Virtual Processor Area (VPA) */
flags = 1UL << (63 - 18);

if (cpu_has_feature(CPU_FTR_ALTIVEC))
paca[cpu].lppaca.vmxregs_in_use = 1;

ret = register_vpa(flags, hwcpu, __pa(vpa));
ret = register_vpa(hwcpu, vpa);

if (ret)
printk(KERN_ERR "WARNING: vpa_init: VPA registration for "
"cpu %d (hw %d) of area %lx returns %ld\n",
cpu, hwcpu, __pa(vpa), ret);
cpu, hwcpu, vpa, ret);
}

long pSeries_lpar_hpte_insert(unsigned long hpte_group,
Expand Down
19 changes: 16 additions & 3 deletions arch/powerpc/platforms/pseries/plpar_wrappers.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,26 @@ static inline long cede_processor(void)
return 0;
}

static inline long register_vpa(unsigned long flags, unsigned long proc,
static inline long vpa_call(unsigned long flags, unsigned long cpu,
unsigned long vpa)
{
return plpar_hcall_norets(H_REGISTER_VPA, flags, proc, vpa);
/* flags are in bits 16-18 (counting from most significant bit) */
flags = flags << (63 - 18);

return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa);
}

static inline long unregister_vpa(unsigned long cpu, unsigned long vpa)
{
return vpa_call(0x5, cpu, vpa);
}

static inline long register_vpa(unsigned long cpu, unsigned long vpa)
{
return vpa_call(0x1, cpu, vpa);
}

void vpa_init(int cpu);
extern void vpa_init(int cpu);

static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex,
unsigned long avpn, unsigned long *old_pteh_ret,
Expand Down
8 changes: 0 additions & 8 deletions include/asm-ppc64/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,6 @@ extern void smp_generic_take_timebase(void);

extern struct smp_ops_t *smp_ops;

#ifdef CONFIG_PPC_PSERIES
void vpa_init(int cpu);
#else
static inline void vpa_init(int cpu)
{
}
#endif /* CONFIG_PPC_PSERIES */

#endif /* __ASSEMBLY__ */

#endif /* !(_PPC64_SMP_H) */
Expand Down

0 comments on commit 40765d2

Please sign in to comment.