From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Saurabh Sengar <ssengar@linux.microsoft.com>
Cc: ssengar@microsoft.com, kys@microsoft.com, haiyangz@microsoft.com,
wei.liu@kernel.org, decui@microsoft.com, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
x86@kernel.org, hpa@zytor.com, linux-hyperv@vger.kernel.org,
linux-kernel@vger.kernel.org, mikelley@microsoft.com
Subject: Re: [PATCH v2] x86/hyperv: Restrict get_vtl to only VTL platforms
Date: Tue, 19 Sep 2023 13:04:45 +0200 [thread overview]
Message-ID: <87jzsme84y.fsf@redhat.com> (raw)
In-Reply-To: <1695101408-22432-1-git-send-email-ssengar@linux.microsoft.com>
Saurabh Sengar <ssengar@linux.microsoft.com> writes:
> For non VTL platforms vtl is always 0, and there is no need of
> get_vtl function. For VTL platforms get_vtl should always succeed
> and should return the correct VTL.
Nitpicking, an alternative summary:
"""
When Linux runs in a non-default VTL (CONFIG_HYPERV_VTL_MODE=y),
get_vtl() must never fail as the result it returns is used in
negotiations with the host. In the more generic case,
(CONFIG_HYPERV_VTL_MODE=n) the VTL is always zero so there's no need to
do the hypercall.
Make get_vtl() BUG() in case of failure and put the implementation under
"if IS_ENABLED(CONFIG_HYPERV_VTL_MODE)" to avoid the call altogether in
the most generic use case.
"""
>
> Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> ---
> [V2]
> - Put the if else at function definition rather then at the caller
>
> arch/x86/hyperv/hv_init.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
> index 783ed339f341..f0128fd4031d 100644
> --- a/arch/x86/hyperv/hv_init.c
> +++ b/arch/x86/hyperv/hv_init.c
> @@ -394,6 +394,7 @@ static void __init hv_get_partition_id(void)
> local_irq_restore(flags);
> }
>
> +#if IS_ENABLED(CONFIG_HYPERV_VTL_MODE)
> static u8 __init get_vtl(void)
> {
> u64 control = HV_HYPERCALL_REP_COMP_1 | HVCALL_GET_VP_REGISTERS;
> @@ -416,13 +417,16 @@ static u8 __init get_vtl(void)
> if (hv_result_success(ret)) {
> ret = output->as64.low & HV_X64_VTL_MASK;
> } else {
> - pr_err("Failed to get VTL(%lld) and set VTL to zero by default.\n", ret);
> - ret = 0;
> + pr_err("Failed to get VTL(error: %lld) exiting...\n", ret);
> + BUG();
> }
>
> local_irq_restore(flags);
> return ret;
> }
> +#else
> +static inline u8 get_vtl(void) { return 0; }
> +#endif
>
> /*
> * This function is to be invoked early in the boot sequence after the
> @@ -604,8 +608,7 @@ void __init hyperv_init(void)
> hv_query_ext_cap(0);
>
> /* Find the VTL */
> - if (!ms_hyperv.paravisor_present && hv_isolation_type_snp())
> - ms_hyperv.vtl = get_vtl();
> + ms_hyperv.vtl = get_vtl();
>
> return;
--
Vitaly
prev parent reply other threads:[~2023-09-19 11:04 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-19 5:30 [PATCH v2] x86/hyperv: Restrict get_vtl to only VTL platforms Saurabh Sengar
2023-09-19 11:04 ` Vitaly Kuznetsov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jzsme84y.fsf@redhat.com \
--to=vkuznets@redhat.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=decui@microsoft.com \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikelley@microsoft.com \
--cc=mingo@redhat.com \
--cc=ssengar@linux.microsoft.com \
--cc=ssengar@microsoft.com \
--cc=tglx@linutronix.de \
--cc=wei.liu@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.