From: Paul Durrant <Paul.Durrant@citrix.com>
To: 'Jan Beulich' <JBeulich@suse.com>
Cc: Andrew Cooper <Andrew.Cooper3@citrix.com>,
Julien Grall <julien.grall@arm.com>,
xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86/HVM: fix interaction between internal and extern emulation
Date: Tue, 28 Nov 2017 11:01:12 +0000 [thread overview]
Message-ID: <5919a70347b244f2b4c99997fdb26e05@AMSPEX02CL03.citrite.net> (raw)
In-Reply-To: <5A1D4B1B0200007800192AD7@prv-mh.provo.novell.com>
> -----Original Message-----
> From: Jan Beulich [mailto:JBeulich@suse.com]
> Sent: 28 November 2017 10:40
> To: Paul Durrant <Paul.Durrant@citrix.com>
> Cc: Julien Grall <julien.grall@arm.com>; Andrew Cooper
> <Andrew.Cooper3@citrix.com>; xen-devel <xen-
> devel@lists.xenproject.org>
> Subject: RE: [PATCH] x86/HVM: fix interaction between internal and extern
> emulation
>
> >>> On 28.11.17 at 11:22, <Paul.Durrant@citrix.com> wrote:
> > It would definitely be good to only reset io_completion when it is clear
> > that handle_hvm_io_completion() is not going to be called (i.e. for
> > internally handled I/O)
>
> Where would you suggest to do that? These two ...
>
> > and perhaps even add ASSERTs in _hvm_emulate_one()
> > and handle_pio().
>
> ... sit down the call tree from handle_hvm_io_completion(). Plus
> internal vs external isn't distinguishable in _hvm_emulate_one()
> afaict (neither on the way in nor on the way out).
Whether the emulation is being handed internally or externally should be apparent on the way out because that's what hvm_vcpu_io_need_completion() is testing for after the call to hvm_emulate_one() in hvm_emulate_one_insn(). The problem is completion being requested if mmio_retry is set even if the former test fails, and I can't remember why that is. On the face of it, it looks wrong.
> Adding
> ASSERT()s there suggests the distinction would need to be done
> up the call stack, yet up the call stack may only be the VM exit
> handler. I don't think the state reset should be done in vendor-
> specific code.
>
I was hoping that an argument could be passed into the call stack by handle_hvm_io_completion() so that the lower layers would be able to distinguish a re-emulation from an initial call and thus be able to verify state. Maybe that is not practical though.
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:[~2017-11-28 11:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-27 8:28 [PATCH] x86/HVM: fix interaction between internal and extern emulation Jan Beulich
2017-11-27 11:59 ` Andrew Cooper
2017-11-28 9:49 ` Paul Durrant
2017-11-28 10:02 ` Jan Beulich
2017-11-28 10:05 ` Paul Durrant
2017-11-28 10:16 ` Jan Beulich
2017-11-28 10:22 ` Paul Durrant
2017-11-28 10:40 ` Jan Beulich
2017-11-28 11:01 ` Paul Durrant [this message]
2017-11-28 11:06 ` Paul Durrant
2017-11-28 11:26 ` Jan Beulich
2017-11-28 11:30 ` Paul Durrant
2017-11-28 11:58 ` Paul Durrant
2017-11-28 12:03 ` Jan Beulich
2017-11-28 13:20 ` 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=5919a70347b244f2b4c99997fdb26e05@AMSPEX02CL03.citrite.net \
--to=paul.durrant@citrix.com \
--cc=Andrew.Cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=julien.grall@arm.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 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).