[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] x86/HVM: make hvmemul_map_linear_addr() honor p2m_ioreq_server
> -----Original Message----- > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] > Sent: 13 November 2018 10:14 > To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx> > Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Paul Durrant > <Paul.Durrant@xxxxxxxxxx>; Wei Liu <wei.liu2@xxxxxxxxxx> > Subject: [PATCH 2/3] x86/HVM: make hvmemul_map_linear_addr() honor > p2m_ioreq_server > > Write accesses to p2m_ioreq_server pages should get redirected to the > emulator also when using the mapping approach. Extend the > p2m_is_discard_write() check there, and restrict both to the write > access case (this is just a latent bug as currently we go this route > only for write accesses). > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > > --- a/xen/arch/x86/hvm/emulate.c > +++ b/xen/arch/x86/hvm/emulate.c > @@ -613,10 +613,21 @@ static void *hvmemul_map_linear_addr( > > *mfn++ = page_to_mfn(page); > > - if ( p2m_is_discard_write(p2mt) ) > + if ( pfec & PFEC_write_access ) > { > - err = ERR_PTR(~X86EMUL_OKAY); > - goto out; > + if ( p2m_is_discard_write(p2mt) ) > + { > + err = ERR_PTR(~X86EMUL_OKAY); > + goto out; > + } > + > + if ( p2mt == p2m_ioreq_server ) > + { > + err = NULL; > + goto out; > + } > + > + ASSERT(p2mt == p2m_ram_logdirty || !p2m_is_readonly(p2mt)); > } > } > > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |