> -----Original Message-----
> From: Jan Beulich <jbeul...@suse.com>
> Sent: 03 March 2020 14:34
> To: Durrant, Paul <pdurr...@amazon.co.uk>
> Cc: xen-devel@lists.xenproject.org; Andrew Cooper
> <andrew.coop...@citrix.com>; Roger Pau Monné <roger....@citrix.com>; Wei
> Liu <w...@xen.org>; Paul Durrant <p...@xen.org>
> Subject: RE: [EXTERNAL][PATCH v5 1/4] x86/HVM: cancel emulation when
> register state got altered
> 
> CAUTION: This email originated from outside of the organization. Do not
> click links or open attachments unless you can confirm the sender and know
> the content is safe.
> 
> 
> 
> On 03.03.2020 15:25, Durrant, Paul wrote:
> >> -----Original Message-----
> >> From: Jan Beulich <jbeul...@suse.com>
> >> Sent: 03 March 2020 14:21
> >> To: Durrant, Paul <pdurr...@amazon.co.uk>
> >> Cc: xen-devel@lists.xenproject.org; Andrew Cooper
> >> <andrew.coop...@citrix.com>; Roger Pau Monné <roger....@citrix.com>;
> Wei
> >> Liu <w...@xen.org>; Paul Durrant <p...@xen.org>
> >> Subject: RE: [EXTERNAL][Xen-devel] [PATCH v5 1/4] x86/HVM: cancel
> >> emulation when register state got altered
> >>
> >> On 03.03.2020 14:16, Durrant, Paul wrote:
> >>>> -----Original Message-----
> >>>> From: Xen-devel <xen-devel-boun...@lists.xenproject.org> On Behalf Of
> >> Jan
> >>>> Beulich
> >>>> Sent: 03 March 2020 10:17
> >>>> To: xen-devel@lists.xenproject.org
> >>>> Cc: Andrew Cooper <andrew.coop...@citrix.com>; Roger Pau Monné
> >>>> <roger....@citrix.com>; Wei Liu <w...@xen.org>; Paul Durrant
> >> <p...@xen.org>
> >>>> Subject: [EXTERNAL][Xen-devel] [PATCH v5 1/4] x86/HVM: cancel
> emulation
> >>>> when register state got altered
> >>>>
> >>>> Re-execution (after having received data from a device model) relies
> on
> >>>> the same register state still being in place as it was when the
> request
> >>>> was first sent to the device model. Therefore vCPU state changes
> >>>> effected by remote sources need to result in no attempt of re-
> >> execution.
> >>>> Instead the returned data is to simply be ignored.
> >>>>
> >>>> Note that any such asynchronous state changes happen with the vCPU at
> >>>> least paused (potentially down and/or not marked ->is_initialised),
> so
> >>>> there's no issue with fiddling with register state behind the
> actively
> >>>> running emulator's back. Hence the new function doesn't need to
> >>>> synchronize with the core emulation logic.
> >>>>
> >>>> Suggested-by: Andrew Cooper <andrew.coop...@citrix.com>
> >>>> Signed-off-by: Jan Beulich <jbeul...@suse.com>
> >>>
> >>> Need we be concerned with any page-split I/O here? That may manifest
> as
> >>> two separate emulations and AFAICT it would be possible for only the
> >>> second part to be aborted by this change.
> >>
> >> I'm not sure whether e.g. INIT is recognized only on insn boundaries.
> >> I.e. this may not be that different from real hardware behavior. _If_
> >> we were to take care of this, how would you envision undoing the
> >> first part of such an access, most notably when the access has side
> >> effects?
> >
> > I wasn't thinking of undoing... I was more thinking that vcpu_pause()
> > ought to defer until an in-progress emulation has fully completed.
> 
> Hmm, at the first glance this looks ugly/fragile to arrange for. I'm
> having a hard time thinking of a rough sketch of how such could be
> made work, in particular without blocking the vcpu_pause() itself
> for too long.
> 

If the vcpu is at the mercy of an external emulator it could take a while. I 
can't really think of a way to avoid that though. Maybe pausing at a 
non-architectural boundary is ok here though.

  Paul

> Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to