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

Nathan Lynch nathanl at linux.ibm.com
Fri Sep 30 08:16:40 AEST 2022


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>


More information about the Linuxppc-dev mailing list