[PATCH] powerpc/pseries/vas: Pass hw_cpu_id to node associativity HCALL

Michal Suchánek msuchanek at suse.de
Fri Sep 30 18:55:42 AEST 2022


Hello,

On Thu, Sep 29, 2022 at 05:16:40PM -0500, Nathan Lynch wrote:
> Haren Myneni <haren at linux.ibm.com> writes:
> > Generally the hypervisor decides to allocate a window on different
> > VAS instances. But if the user space wishes to allocate on the
> > current VAS instance where the process is executing, the kernel has
> > to pass associativity domain IDs to allocate VAS window HCALL. To
> > determine the associativity domain IDs for the current CPU, passing
> > smp_processor_id() to node associativity HCALL which may return
> > H_P2 (-55) error during DLPAR CPU event.
> >
> > This patch fixes this issue by passing hard_smp_processor_id() with
> > VPHN_FLAG_VCPU flag (PAPR 14.11.6.1 H_HOME_NODE_ASSOCIATIVITY).
> >
> > Signed-off-by: Haren Myneni <haren at linux.ibm.com>
> > ---
> >  arch/powerpc/platforms/pseries/vas.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/arch/powerpc/platforms/pseries/vas.c b/arch/powerpc/platforms/pseries/vas.c
> > index fe33bdb620d5..533026fd1f40 100644
> > --- a/arch/powerpc/platforms/pseries/vas.c
> > +++ b/arch/powerpc/platforms/pseries/vas.c
> > @@ -348,7 +348,7 @@ static struct vas_window *vas_allocate_window(int vas_id, u64 flags,
> >  		 * So no unpacking needs to be done.
> >  		 */
> >  		rc = plpar_hcall9(H_HOME_NODE_ASSOCIATIVITY, domain,
> > -				  VPHN_FLAG_VCPU, smp_processor_id());
> > +				  VPHN_FLAG_VCPU, hard_smp_processor_id());
> >  		if (rc != H_SUCCESS) {
> >  			pr_err("H_HOME_NODE_ASSOCIATIVITY error: %d\n", rc);
> >  			goto out;
> 
> Yes, it is always wrong to pass Linux CPU numbers to the hypervisor,
> which has its own numbering for hardware threads. It usually coincides
> with Linux's numbering in practice, which tends to hide bugs like this.
> 
> Reviewed-by: Nathan Lynch <nathanl at linux.ibm.com>

This is the code that introduces the problem, right?

Fixes: b22f2d88e435 ("powerpc/pseries/vas: Integrate API with open/close windows")

Thanks

Michal


More information about the Linuxppc-dev mailing list