2019-10-15 11:19:51

by Andrea Parri

[permalink] [raw]
Subject: [PATCH] x86/hyperv: Set pv_info.name to "Hyper-V"

Michael reported that the x86/hyperv initialization code printed the
following dmesg when running in a VM on Hyper-V:

[ 0.000738] Booting paravirtualized kernel on bare hardware

Let the x86/hyperv initialization code set pv_info.name to "Hyper-V";
with this addition, the dmesg read:

[ 0.000138] Booting paravirtualized kernel on Hyper-V

Reported-by: Michael Kelley <[email protected]>
Signed-off-by: Andrea Parri <[email protected]>
---
arch/x86/kernel/cpu/mshyperv.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index 105844d542e5..c7d1801fa88b 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -154,6 +154,8 @@ static uint32_t __init ms_hyperv_platform(void)
if (!boot_cpu_has(X86_FEATURE_HYPERVISOR))
return 0;

+ pv_info.name = "Hyper-V";
+
cpuid(HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS,
&eax, &hyp_signature[0], &hyp_signature[1], &hyp_signature[2]);

--
2.17.1


2019-10-15 11:20:28

by Wei Liu

[permalink] [raw]
Subject: Re: [PATCH] x86/hyperv: Set pv_info.name to "Hyper-V"

On Tue, 15 Oct 2019 at 10:30, Andrea Parri <[email protected]> wrote:
>
> Michael reported that the x86/hyperv initialization code printed the
> following dmesg when running in a VM on Hyper-V:
>
> [ 0.000738] Booting paravirtualized kernel on bare hardware
>
> Let the x86/hyperv initialization code set pv_info.name to "Hyper-V";
> with this addition, the dmesg read:
>
> [ 0.000138] Booting paravirtualized kernel on Hyper-V
>
> Reported-by: Michael Kelley <[email protected]>
> Signed-off-by: Andrea Parri <[email protected]>
> ---
> arch/x86/kernel/cpu/mshyperv.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
> index 105844d542e5..c7d1801fa88b 100644
> --- a/arch/x86/kernel/cpu/mshyperv.c
> +++ b/arch/x86/kernel/cpu/mshyperv.c
> @@ -154,6 +154,8 @@ static uint32_t __init ms_hyperv_platform(void)

This function is for platform detection only.

> if (!boot_cpu_has(X86_FEATURE_HYPERVISOR))
> return 0;
>
> + pv_info.name = "Hyper-V";
> +

At this point we're not sure if Linux is really running on Hyper-V yet.

Setting pv_info.name should be moved to the init_platform hook, i.e.
ms_hyperv_init_platform.

Wei.

> cpuid(HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS,
> &eax, &hyp_signature[0], &hyp_signature[1], &hyp_signature[2]);
>
> --
> 2.17.1
>

2019-10-15 11:36:05

by Andrea Parri

[permalink] [raw]
Subject: Re: [PATCH] x86/hyperv: Set pv_info.name to "Hyper-V"

> > @@ -154,6 +154,8 @@ static uint32_t __init ms_hyperv_platform(void)
>
> This function is for platform detection only.
>
> > if (!boot_cpu_has(X86_FEATURE_HYPERVISOR))
> > return 0;
> >
> > + pv_info.name = "Hyper-V";
> > +
>
> At this point we're not sure if Linux is really running on Hyper-V yet.
>
> Setting pv_info.name should be moved to the init_platform hook, i.e.
> ms_hyperv_init_platform.

Thank you for the review, Wei. I'll move this to the init_platform hook
and re-submit shortly.

Thanks,
Andrea