[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] nested EPT: fixing wrong handling for L2 guest's direct mmio access



At 09:59 +0100 on 17 Jan (1389949194), Egger, Christoph wrote:
> On 17.01.14 07:35, Yang Zhang wrote:
> > From: Yang Zhang <yang.z.zhang@xxxxxxxxx>
> > 
> > L2 guest will access the physical device directly(nested VT-d). For such 
> > access,
> > Shadow EPT table should point to device's MMIO. But in current logic, L0 
> > doesn't
> > distinguish the MMIO whether from qemu or physical device when building 
> > shadow EPT table.
> > This is wrong. This patch will setup the correct shadow EPT table for such 
> > MMIO ranges.
> > 
> > Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx>
> > ---
> >  xen/arch/x86/mm/hap/nested_hap.c    |   10 ++++++++--
> >  xen/include/asm-x86/hvm/nestedhvm.h |    1 +
> >  2 files changed, 9 insertions(+), 2 deletions(-)
> > 
> > diff --git a/xen/arch/x86/mm/hap/nested_hap.c 
> > b/xen/arch/x86/mm/hap/nested_hap.c
> > index c2ef1d1..38e2327 100644
> > --- a/xen/arch/x86/mm/hap/nested_hap.c
> > +++ b/xen/arch/x86/mm/hap/nested_hap.c
> > @@ -170,8 +170,11 @@ nestedhap_walk_L0_p2m(struct p2m_domain *p2m, paddr_t 
> > L1_gpa, paddr_t *L0_gpa,
> >      mfn = get_gfn_type_access(p2m, L1_gpa >> PAGE_SHIFT, p2mt, p2ma,
> >                                0, page_order);
> >  
> > +    rc = NESTEDHVM_PAGEFAULT_DIRECT_MMIO;
> > +    if ( *p2mt == p2m_mmio_direct )
> > +        goto direct_mmio_out;
> >      rc = NESTEDHVM_PAGEFAULT_MMIO;
> > -    if ( p2m_is_mmio(*p2mt) )
> > +    if ( *p2mt == p2m_mmio_dm )
> >          goto out;
> 
> Why does p2m_is_mmio() not cover p2m_mmio_direct ?

It does.  This code is changing to cover the two kinds of mmio
separately.

Tim.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.