From: Alejandro Vallejo <agarciav@amd.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>,
"Ariadne Conill" <ariadne@ariadne.space>
Cc: <xen-devel@lists.xenproject.org>, Paul Durrant <paul@xen.org>,
"Jan Beulich" <jbeulich@suse.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
"Alexander M . Merritt" <alexander@edera.dev>
Subject: Re: [PATCH v2] x86/hyperv: use dynamically allocated page for hypercalls
Date: Mon, 28 Apr 2025 11:55:31 +0100 [thread overview]
Message-ID: <D9I7TPLT0EJD.3F5P95H69CT5K@amd.com> (raw)
In-Reply-To: <aA9NMJVbyXeMOOY-@macbook.lan>
On Mon Apr 28, 2025 at 10:41 AM BST, Roger Pau Monné wrote:
> On Fri, Apr 25, 2025 at 04:43:31PM -0700, Ariadne Conill wrote:
>> Previously Xen placed the hypercall page at the highest possible MFN,
>> but this caused problems on systems where there is more than 36 bits
>> of physical address space.
>>
>> In general, it also seems unreliable to assume that the highest possible
>> MFN is not already reserved for some other purpose.
>>
>> Changes from v1:
>> - Continue to use fixmap infrastructure
>> - Use panic in Hyper-V setup() function instead of returning -ENOMEM
>> on hypercall page allocation failure
>>
>> Fixes: 620fc734f854 ("x86/hyperv: setup hypercall page")
>> Cc: Alejandro Vallejo <agarciav@amd.com>
>> Cc: Alexander M. Merritt <alexander@edera.dev>
>> Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
>> ---
>> xen/arch/x86/guest/hyperv/hyperv.c | 17 +++++++----------
>> xen/arch/x86/include/asm/guest/hyperv.h | 3 ---
>> 2 files changed, 7 insertions(+), 13 deletions(-)
>>
>> diff --git a/xen/arch/x86/guest/hyperv/hyperv.c b/xen/arch/x86/guest/hyperv/hyperv.c
>> index 6989af38f1..0305374a06 100644
>> --- a/xen/arch/x86/guest/hyperv/hyperv.c
>> +++ b/xen/arch/x86/guest/hyperv/hyperv.c
>> @@ -98,7 +98,13 @@ static void __init setup_hypercall_page(void)
>> rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
>> if ( !hypercall_msr.enable )
>> {
>> - mfn = HV_HCALL_MFN;
>> + void *hcall_page = alloc_xenheap_page();
>> + if ( !hcall_page )
>> + panic("Hyper-V: Failed to allocate hypercall trampoline page");
>> +
>> + printk("Hyper-V: Allocated hypercall page @ %p.\n", hcall_page);
>
> This likely wants to be a dprintk, and possibly also print the
> physical address of the used page? And no period at the end of the
> sentence IMO.
>
> I think Xen might have used the last page in the physical address
> range to prevent HyperV from possibly shattering a superpage in the
> second stage translation page-tables if normal RAM was used?
>
> However I don't know whether HyperV will shatter super-pages if a
> sub-page of it is used to contain the hypercall page (I don't think it
> should?)
I think it's quite unlikely. Seeing how Linux simply vmalloc()s and
Microsoft seems to genuinely care about Linux in this day and age. It
seems fair to assume Hyper-V might just copy the old memory out and
rewrite it with the trampoline contents when enabling the MSR, thereby
keeping superpages together in their p2m.
>
> Thanks, Roger.
Cheers,
Alejandro
next prev parent reply other threads:[~2025-04-28 10:55 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 23:43 [PATCH v2] x86/hyperv: use dynamically allocated page for hypercalls Ariadne Conill
2025-04-28 7:00 ` Jan Beulich
2025-04-28 9:41 ` Roger Pau Monné
2025-04-28 10:55 ` Alejandro Vallejo [this message]
2025-04-28 11:07 ` Andrew Cooper
2025-04-28 11:50 ` Alejandro Vallejo
2025-04-29 8:15 ` Roger Pau Monné
2025-04-29 11:13 ` Alejandro Vallejo
2025-04-28 10:41 ` Alejandro Vallejo
2025-04-28 11:09 ` Andrew Cooper
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=D9I7TPLT0EJD.3F5P95H69CT5K@amd.com \
--to=agarciav@amd.com \
--cc=alexander@edera.dev \
--cc=andrew.cooper3@citrix.com \
--cc=ariadne@ariadne.space \
--cc=jbeulich@suse.com \
--cc=paul@xen.org \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.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.