From: Paul Durrant <Paul.Durrant@citrix.com>
To: 'Jan Beulich' <JBeulich@suse.com>
Cc: Andrew Cooper <Andrew.Cooper3@citrix.com>,
Olaf Hering <olaf@aepfle.de>,
xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 2/2] x86/HVM: split page straddling emulated accesses in more cases
Date: Tue, 4 Sep 2018 08:15:47 +0000 [thread overview]
Message-ID: <374cf97a94194c4980c127dc01e709cc@AMSPEX02CL03.citrite.net> (raw)
In-Reply-To: <5B8E37B202000078001E4F65@prv1-mh.provo.novell.com>
> -----Original Message-----
> From: Jan Beulich [mailto:JBeulich@suse.com]
> Sent: 04 September 2018 08:44
> To: Paul Durrant <Paul.Durrant@citrix.com>
> Cc: Olaf Hering <olaf@aepfle.de>; Andrew Cooper
> <Andrew.Cooper3@citrix.com>; xen-devel <xen-
> devel@lists.xenproject.org>
> Subject: RE: [PATCH v2 2/2] x86/HVM: split page straddling emulated
> accesses in more cases
>
> >>> On 03.09.18 at 18:15, <Paul.Durrant@citrix.com> wrote:
> >> From: Jan Beulich [mailto:JBeulich@suse.com]
> >> Sent: 03 September 2018 16:45
> >>[...]
> >> The extra call to known_glfn() from hvmemul_write() is just to preserve
> >> original behavior; we should consider dropping this (also to make sure
> >> the intended effect of 8cbd4fb0b7 ["x86/hvm: implement
> hvmemul_write()
> >> using real mappings"] is achieved in all cases where it can be achieved
> >> without further rework), or alternatively we perhaps ought to mirror
> >> this in hvmemul_rmw().
>
> If you really want me to do the change below, could I have an
> opinion on the above as well, as this may imply further re-work
> of the patch?
It seems to me that the behaviour should be mirrored in hvmemul_rmw() to be correct.
>
> >> --- a/xen/arch/x86/hvm/emulate.c
> >> +++ b/xen/arch/x86/hvm/emulate.c
> >> @@ -1041,6 +1041,110 @@ static inline int hvmemul_linear_mmio_wr
> >> pfec, hvmemul_ctxt, translate);
> >> }
> >>
> >> +static bool known_glfn(unsigned long addr, unsigned int bytes, uint32_t
> >> pfec)
> >> +{
> >> + const struct hvm_vcpu_io *vio = ¤t->arch.hvm.hvm_io;
> >> +
> >> + if ( pfec & PFEC_write_access )
> >> + {
> >> + if ( !vio->mmio_access.write_access )
> >> + return false;
> >> + }
> >> + else if ( pfec & PFEC_insn_fetch )
> >> + {
> >> + if ( !vio->mmio_access.insn_fetch )
> >> + return false;
> >> + }
> >> + else if ( !vio->mmio_access.read_access )
> >> + return false;
> >> +
> >> + return (vio->mmio_gla == (addr & PAGE_MASK) &&
> >> + (addr & ~PAGE_MASK) + bytes <= PAGE_SIZE);
> >> +}
> >> +
> >
> > Would it be possible to split the introduction of the above function into a
> > separate patch? AFAICT it does not seem to be intrinsically involved with
> > handle page straddling. It was certainly not there in your RFC patch.
>
> The need for (or at least desirability of) it became obvious with the addition
> of the logic to the write and rmw paths. It _could_ be split out, but it now is
> a strictly necessary part/prereq of the change here.
I was thinking it would be clearer to introduce known_glfn() in a patch prior to this one and then use it in the if statements just after the calls to hvmemul_virtual_to_linear() in read and write, possibly re-working rmw at that point also.
Paul
>
> Jan
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2018-09-04 8:15 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-30 11:05 [PATCH 0/2] x86/HVM: emulation adjustments Jan Beulich
2018-08-30 11:09 ` [PATCH 1/2] x86/HVM: drop hvm_fetch_from_guest_linear() Jan Beulich
2018-08-30 11:18 ` Andrew Cooper
2018-08-30 12:02 ` Jan Beulich
2018-08-30 12:22 ` Andrew Cooper
2018-08-30 12:28 ` Jan Beulich
2018-08-30 11:24 ` Andrew Cooper
2018-08-30 11:09 ` [PATCH RFC 2/2] x86/HVM: split page straddling emulated accesses in more cases Jan Beulich
2018-09-03 9:11 ` Paul Durrant
2018-09-03 15:41 ` [PATCH v2 0/2] x86/HVM: emulation adjustments Jan Beulich
2018-09-03 15:43 ` [PATCH v2 1/2] x86/HVM: drop hvm_fetch_from_guest_linear() Jan Beulich
2018-09-04 10:01 ` Jan Beulich
2018-09-05 7:20 ` Olaf Hering
2018-09-03 15:44 ` [PATCH v2 2/2] x86/HVM: split page straddling emulated accesses in more cases Jan Beulich
2018-09-03 16:15 ` Paul Durrant
2018-09-04 7:43 ` Jan Beulich
2018-09-04 8:15 ` Paul Durrant [this message]
2018-09-04 8:46 ` Jan Beulich
2018-09-05 7:22 ` Olaf Hering
2018-09-06 12:58 ` [PATCH v3 0/3] x86/HVM: emulation adjustments Jan Beulich
2018-09-06 13:03 ` [PATCH v3 1/3] x86/HVM: drop hvm_fetch_from_guest_linear() Jan Beulich
2018-09-06 14:51 ` Paul Durrant
2018-09-06 13:03 ` [PATCH v3 2/3] x86/HVM: add known_gla() emulation helper Jan Beulich
2018-09-06 13:12 ` Paul Durrant
2018-09-06 13:22 ` Jan Beulich
2018-09-06 14:50 ` Paul Durrant
2018-09-06 13:04 ` [PATCH v3 3/3] x86/HVM: split page straddling emulated accesses in more cases Jan Beulich
2018-09-06 13:14 ` 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=374cf97a94194c4980c127dc01e709cc@AMSPEX02CL03.citrite.net \
--to=paul.durrant@citrix.com \
--cc=Andrew.Cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=olaf@aepfle.de \
--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;
as well as URLs for NNTP newsgroup(s).