From: Wei Liu <wei.liu@kernel.org>
To: Roman Kisel <romank@linux.microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>,
hpa@zytor.com, kys@microsoft.com, bp@alien8.de,
dave.hansen@linux.intel.com, decui@microsoft.com,
eahariha@linux.microsoft.com, haiyangz@microsoft.com,
mingo@redhat.com, mhklinux@outlook.com,
nunodasneves@linux.microsoft.com, tglx@linutronix.de,
tiala@microsoft.com, linux-hyperv@vger.kernel.org,
linux-kernel@vger.kernel.org, x86@kernel.org,
apais@microsoft.com, benhill@microsoft.com,
ssengar@microsoft.com, sunilmut@microsoft.com, vdso@hexbites.dev
Subject: Re: [PATCH 2/2] hyperv: Do not overlap the input and output hypercall areas in get_vtl(void)
Date: Thu, 19 Dec 2024 21:35:04 +0000 [thread overview]
Message-ID: <Z2SRiEW6yU2Nf4hs@liuwe-devbox-debian-v2> (raw)
In-Reply-To: <8da58247-87df-4250-820a-758ea8e00bbb@linux.microsoft.com>
On Thu, Dec 19, 2024 at 10:19:07AM -0800, Roman Kisel wrote:
>
>
> On 12/18/2024 6:42 PM, Wei Liu wrote:
> > On Wed, Dec 18, 2024 at 12:54:21PM -0800, Roman Kisel wrote:
> > > The Top-Level Functional Specification for Hyper-V, Section 3.6 [1, 2], disallows
> > > overlapping of the input and output hypercall areas, and get_vtl(void) does
> > > overlap them.
> > >
> > > To fix this, enable allocation of the output hypercall pages when running in
> > > the VTL mode and use the output hypercall page of the current vCPU for the
> > > hypercall.
> > >
> > > [1] https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/hypercall-interface
> > > [2] https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/main/tlfs
> > >
> > > Fixes: 8387ce06d70b ("x86/hyperv: Set Virtual Trust Level in VMBus init message")
> > > Signed-off-by: Roman Kisel <romank@linux.microsoft.com>
> > > ---
> > > arch/x86/hyperv/hv_init.c | 2 +-
> > > drivers/hv/hv_common.c | 6 +++---
> > > 2 files changed, 4 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
> > > index c7185c6a290b..90c9ea00273e 100644
> > > --- a/arch/x86/hyperv/hv_init.c
> > > +++ b/arch/x86/hyperv/hv_init.c
> > > @@ -422,7 +422,7 @@ static u8 __init get_vtl(void)
> > > local_irq_save(flags);
> > > input = *this_cpu_ptr(hyperv_pcpu_input_arg);
> > > - output = (struct hv_get_vp_registers_output *)input;
> > > + output = *this_cpu_ptr(hyperv_pcpu_output_arg);
> >
> > You can do
> >
> > output = (char *)input + HV_HYP_PAGE_SIZE / 2;
> >
> > to avoid the extra allocation.
> >
> > The input and output structures surely won't take up half of the page.
> Agreed on the both counts! I do think that the attempt to save here
> won't help much: the hypercall output per-CPU pages in the VTL mode are
> needed just as in the dom0/root partition mode because this hypercall
> isn't going to be the only one required.
>
> In other words, we will have to allocate these pages anyway as we evolve
> the code; we are trying to save here what is going to be spent anyway. Sort
> of, kicking the can down the road as the saying goes :)
>
If you want this patch to be backported, then the smaller the change the
better.
In this particular case, I don't have a strong opinion. Your original
patch is small enough to be backported easily.
You can keep the patch as-is.
Thanks,
Wei.
next prev parent reply other threads:[~2024-12-19 21:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-18 20:54 [PATCH 0/2] hyperv: Fixes for get_vtl(void) Roman Kisel
2024-12-18 20:54 ` [PATCH 1/2] hyperv: Fix pointer type for the output of the hypercall in get_vtl(void) Roman Kisel
2024-12-19 2:45 ` Wei Liu
2024-12-19 17:26 ` Roman Kisel
2024-12-19 18:40 ` Nuno Das Neves
2024-12-19 19:11 ` Roman Kisel
2024-12-19 19:13 ` Easwar Hariharan
2024-12-19 19:23 ` Nuno Das Neves
2024-12-19 19:32 ` Easwar Hariharan
2024-12-19 20:03 ` Roman Kisel
2024-12-19 20:00 ` Roman Kisel
2024-12-19 20:04 ` Easwar Hariharan
2024-12-19 20:18 ` Roman Kisel
2024-12-18 20:54 ` [PATCH 2/2] hyperv: Do not overlap the input and output hypercall areas " Roman Kisel
2024-12-19 2:42 ` Wei Liu
2024-12-19 18:19 ` Roman Kisel
2024-12-19 21:35 ` Wei Liu [this message]
2024-12-19 21:37 ` Michael Kelley
2024-12-19 23:39 ` Roman Kisel
2024-12-20 2:01 ` Michael Kelley
2024-12-20 19:13 ` Roman Kisel
2024-12-20 22:42 ` Michael Kelley
2024-12-23 20:30 ` Roman Kisel
2024-12-24 16:45 ` Michael Kelley
2024-12-26 16:45 ` Roman Kisel
2024-12-26 20:04 ` Michael Kelley
2024-12-26 20:42 ` Roman Kisel
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=Z2SRiEW6yU2Nf4hs@liuwe-devbox-debian-v2 \
--to=wei.liu@kernel.org \
--cc=apais@microsoft.com \
--cc=benhill@microsoft.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=decui@microsoft.com \
--cc=eahariha@linux.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=mhklinux@outlook.com \
--cc=mingo@redhat.com \
--cc=nunodasneves@linux.microsoft.com \
--cc=romank@linux.microsoft.com \
--cc=ssengar@microsoft.com \
--cc=sunilmut@microsoft.com \
--cc=tglx@linutronix.de \
--cc=tiala@microsoft.com \
--cc=vdso@hexbites.dev \
--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.