[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/hvm: fix interaction between internal and external emulation
>>> On 05.12.17 at 15:11, <Paul.Durrant@xxxxxxxxxx> wrote: >> From: Xen-devel [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf >> Of Paul Durrant >> Sent: 05 December 2017 14:00 >> To: 'Jan Beulich' <JBeulich@xxxxxxxx> >> > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] >> > Sent: 05 December 2017 13:53 >> > >>> On 28.11.17 at 15:05, <paul.durrant@xxxxxxxxxx> wrote: >> > > --- a/xen/arch/x86/hvm/io.c >> > > +++ b/xen/arch/x86/hvm/io.c >> > > @@ -88,7 +88,7 @@ bool >> > hvm_emulate_one_insn(hvm_emulate_validate_t *validate, const char >> > *descr) >> > > >> > > rc = hvm_emulate_one(&ctxt); >> > > >> > > - if ( hvm_vcpu_io_need_completion(vio) || vio->mmio_retry ) >> > > + if ( hvm_vcpu_io_need_completion(vio) ) >> > > vio->io_completion = HVMIO_mmio_completion; >> > > else >> > > vio->mmio_access = (struct npfec){}; >> > >> > While I can't (yet) say why without this change things would have >> > behaved better on that old AMD box which is causing the osstest >> > failure, I think Andrew's suggestion that we might be trying to >> > emulate from a stale instruction cache is spot on: Doesn't >> >> Yes, I can't see how the above was ever correct. > > I think I see why this worked before... > > Setting up the io_completion value meant that when hvm_do_resume() called > handle_hvm_io_completion() there was apparently an mmio outstanding and thus > handle_mmio() was called. At some point handle_mmio() has become a static > inline that calls hvm_emulate_one_insn() and that took care of the remaining > reps. That would have worked sometimes, but as we've recently clarified handle_hvm_io_completion() won't be called every time before exiting back to the guest. IOW I would have expected random failures with the same pattern as we see now, but I don't recall ever having seen such before. (Otoh I admit I don't always look closely when a transient failure occurs and then disappears in the next flight.) Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |