From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Paul Durrant <Paul.Durrant@citrix.com>,
"x86@kernel.org" <x86@kernel.org>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Juergen Gross <jgross@suse.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [Xen-devel] [PATCH] x86/xen: support priv-mapping in an HVM tools domain
Date: Fri, 20 Oct 2017 11:09:28 -0400 [thread overview]
Message-ID: <69e93ee8-5d93-35fa-ffc1-d7a7fbbd5599@oracle.com> (raw)
In-Reply-To: <aa19e72a128141c4b0bad85de7c2f82c@AMSPEX02CL03.citrite.net>
On 10/20/2017 04:35 AM, Paul Durrant wrote:
>> -----Original Message-----
>> From: Xen-devel [mailto:xen-devel-bounces@lists.xen.org] On Behalf Of
>> Boris Ostrovsky
>> Sent: 19 October 2017 18:45
>> To: Paul Durrant <Paul.Durrant@citrix.com>; x86@kernel.org; xen-
>> devel@lists.xenproject.org; linux-kernel@vger.kernel.org
>> Cc: Juergen Gross <jgross@suse.com>; Thomas Gleixner
>> <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; H. Peter Anvin
>> <hpa@zytor.com>
>> Subject: Re: [Xen-devel] [PATCH] x86/xen: support priv-mapping in an HVM
>> tools domain
>>
>> On 10/19/2017 11:26 AM, Paul Durrant wrote:
>>> If the domain has XENFEAT_auto_translated_physmap then use of the PV-
>>> specific HYPERVISOR_mmu_update hypercall is clearly incorrect.
>>>
>>> This patch adds checks in xen_remap_domain_gfn_array() and
>>> xen_unmap_domain_gfn_array() which call through to the approprate
>>> xlate_mmu function if the feature is present. A check is also added
>>> to xen_remap_domain_gfn_range() to fail with -EOPNOTSUPP since this
>>> should not be used in an HVM tools domain.
>>>
>>> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>>> ---
>>> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>> Cc: Juergen Gross <jgross@suse.com>
>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>> Cc: Ingo Molnar <mingo@redhat.com>
>>> Cc: "H. Peter Anvin" <hpa@zytor.com>
>>> ---
>>> arch/x86/xen/mmu.c | 14 ++++++++++++--
>>> 1 file changed, 12 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
>>> index 3e15345abfe7..d33e7dbe3129 100644
>>> --- a/arch/x86/xen/mmu.c
>>> +++ b/arch/x86/xen/mmu.c
>>> @@ -172,6 +172,9 @@ int xen_remap_domain_gfn_range(struct
>> vm_area_struct *vma,
>>> pgprot_t prot, unsigned domid,
>>> struct page **pages)
>>> {
>>> + if (xen_feature(XENFEAT_auto_translated_physmap))
>>> + return -EOPNOTSUPP;
>>> +
>> This is never called on XENFEAT_auto_translated_physmap domains, there
>> is a check in privcmd_ioctl_mmap() for that.
> Yes, that's true but it seems like the wrong place for such a check. I could remove that one it you'd prefer.
I actually think that perhaps we could wrap privcmd_ioctl_mmap() with
"#ifdef CONFIG_XEN_PV" (#else return -ENOSYS) and move
xen_remap_domain_gfn_range() to mmu_pv.c. We can then remove it from ARM
code too.
>
>>> return do_remap_gfn(vma, addr, &gfn, nr, NULL, prot, domid,
>> pages);
>>> }
>>> EXPORT_SYMBOL_GPL(xen_remap_domain_gfn_range);
>>> @@ -182,6 +185,10 @@ int xen_remap_domain_gfn_array(struct
>> vm_area_struct *vma,
>>> int *err_ptr, pgprot_t prot,
>>> unsigned domid, struct page **pages)
>>> {
>>> + if (xen_feature(XENFEAT_auto_translated_physmap))
>>> + return xen_xlate_remap_gfn_array(vma, addr, gfn, nr,
>> err_ptr,
>>> + prot, domid, pages);
>>> +
>> So how did this work before? In fact, I don't see any callers of
>> xen_xlate_{re|un}map_gfn_range().
> I assume mean 'array' for the map since there is no xen_xlate_remap_gfn_range() function. I'm not quite sure what you're asking? Without this patch the mmu code in an x86 domain simply assumes the domain is PV... the xlate code is currently only used via the arm mmu code (where it clearly knows it's not PV). AFAICS this Is just a straightforward buggy assumption in the x86 code.
Looks like this was originally intended for dom0 PVH and was removed by
063334f. So it should indeed be restored.
-boris
>
> Paul
>
>> -boris
>>
>>
>>> /* We BUG_ON because it's a programmer error to pass a NULL
>> err_ptr,
>>> * and the consequences later is quite hard to detect what the actual
>>> * cause of "wrong memory was mapped in".
>>> @@ -193,9 +200,12 @@
>> EXPORT_SYMBOL_GPL(xen_remap_domain_gfn_array);
>>> /* Returns: 0 success */
>>> int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
>>> - int numpgs, struct page **pages)
>>> + int nr, struct page **pages)
>>> {
>>> - if (!pages || !xen_feature(XENFEAT_auto_translated_physmap))
>>> + if (xen_feature(XENFEAT_auto_translated_physmap))
>>> + return xen_xlate_unmap_gfn_range(vma, nr, pages);
>>> +
>>> + if (!pages)
>>> return 0;
>>>
>>> return -EINVAL;
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xen.org
>> https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-10-20 15:09 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-19 15:26 Paul Durrant
2017-10-19 17:45 ` Boris Ostrovsky
2017-10-20 8:35 ` [Xen-devel] " Paul Durrant
2017-10-20 15:09 ` Boris Ostrovsky [this message]
2017-10-20 15:54 ` Paul Durrant
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=69e93ee8-5d93-35fa-ffc1-d7a7fbbd5599@oracle.com \
--to=boris.ostrovsky@oracle.com \
--cc=Paul.Durrant@citrix.com \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®