Re: [PATCH] x86/hyperv: LP creation with lp_index on same CPU-id

From: Wei Liu
Date: Mon May 31 2021 - 06:58:02 EST


On Mon, May 31, 2021 at 01:10:46PM +0530, Praveen Kumar wrote:
> The hypervisor expects the lp_index to be same as cpu-id during LP creation
> This fix correct the same, as cpu_physical_id can give different cpu-id.

Code looks fine to me, but the commit message can be made clearer.

"""
The hypervisor expects the logical processor index to be the same as
CPU's id during logical processor creation. Using cpu_physical_id
confuses Microsoft Hypervisor's scheduler. That causes the root
partition not boot when core scheduler is used.

This patch removes the call to cpu_physical_id and uses the CPU index
directly for bringing up logical processor. This scheme works for both
classic scheduler and core scheduler.

Fixes: 333abaf5abb3 (x86/hyperv: implement and use hv_smp_prepare_cpus)
"""

No action is required from you. If you are fine with this commit message
I can incorporate it and update the subject line when committing this
patch.

>
> Signed-off-by: Praveen Kumar <kumarpraveen@xxxxxxxxxxxxxxxxxxx>
> ---
> arch/x86/kernel/cpu/mshyperv.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
> index 22f13343b5da..4fa0a4280895 100644
> --- a/arch/x86/kernel/cpu/mshyperv.c
> +++ b/arch/x86/kernel/cpu/mshyperv.c
> @@ -236,7 +236,7 @@ static void __init hv_smp_prepare_cpus(unsigned int max_cpus)
> for_each_present_cpu(i) {
> if (i == 0)
> continue;
> - ret = hv_call_add_logical_proc(numa_cpu_node(i), i, cpu_physical_id(i));
> + ret = hv_call_add_logical_proc(numa_cpu_node(i), i, i);
> BUG_ON(ret);
> }
>
> --
> 2.25.1
>