[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/mm: Take the p2m lock even in shadow mode.
At 09:58 -0500 on 21 Feb (1361440689), Andres Lagar-Cavilla wrote: > > The remaining locked lookups are in sh_page_fault() (in a path that's > > almost always already serializing on the paging lock), and in > > emulate_map_dest() (which can probably be updated to use > > get_page_from_gfn()). > That is absolutely the case. Here is a rough patch: Applied, thanks. I've taken your S-o-b below to apply to this patch too; hope that's OK. Tim. > diff -r 7324955b35ad xen/arch/x86/mm/shadow/multi.c > --- a/xen/arch/x86/mm/shadow/multi.c > +++ b/xen/arch/x86/mm/shadow/multi.c > @@ -4861,6 +4861,7 @@ static mfn_t emulate_gva_to_mfn(struct v > struct sh_emulate_ctxt *sh_ctxt) > { > unsigned long gfn; > + struct page_info *page; > mfn_t mfn; > p2m_type_t p2mt; > uint32_t pfec = PFEC_page_present | PFEC_write_access; > @@ -4878,22 +4879,30 @@ static mfn_t emulate_gva_to_mfn(struct v > > /* Translate the GFN to an MFN */ > ASSERT(!paging_locked_by_me(v->domain)); > - mfn = get_gfn(v->domain, _gfn(gfn), &p2mt); > - > + page = get_page_from_gfn(v->domain, gfn, &p2mt, P2M_ALLOC); > + > + /* Sanity checking */ > + if ( page == NULL ) > + { > + return _mfn(BAD_GFN_TO_MFN); > + } > if ( p2m_is_readonly(p2mt) ) > { > - put_gfn(v->domain, gfn); > + put_page(page); > return _mfn(READONLY_GFN); > } > if ( !p2m_is_ram(p2mt) ) > { > - put_gfn(v->domain, gfn); > + put_page(page); > return _mfn(BAD_GFN_TO_MFN); > } > - > + mfn = page_to_mfn(page); > ASSERT(mfn_valid(mfn)); > + > v->arch.paging.last_write_was_pt = !!sh_mfn_is_a_page_table(mfn); > - put_gfn(v->domain, gfn); > + /* Note shadow cannot page out or unshare this mfn, so the map won't > + * disappear. Otherwise, caller must hold onto page until done. */ > + put_page(page); > return mfn; > } > > > > > They're not addressed here but may be in a > > follow-up patch. > > > > Acked-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> > or Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>? see > http://lists.xen.org/archives/html/xen-devel/2012-04/msg00962.html > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |