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

Michael Ellerman mpe at ellerman.id.au
Fri Sep 30 20:35:15 AEST 2022


Michal Suchánek <msuchanek at suse.de> writes:
> 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")

Yeah, I tagged it when applying. Thanks.

cheers


More information about the Linuxppc-dev mailing list