[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 18/55] x86/mm: switch to new APIs in modify_xen_mappings
On Mon, Mar 18, 2019 at 09:14:28PM +0000, Nuernberger, Stefan wrote: > On Thu, 2019-02-07 at 16:44 +0000, Wei Liu wrote: > > Page tables allocated in that function should be mapped and unmapped > > now. > > > > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> > > --- > > xen/arch/x86/mm.c | 31 ++++++++++++++++++++++--------- > > 1 file changed, 22 insertions(+), 9 deletions(-) > > > > diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c > > index 1ea2974c1f..18c7b43705 100644 > > --- a/xen/arch/x86/mm.c > > +++ b/xen/arch/x86/mm.c > > @@ -5436,6 +5436,7 @@ int modify_xen_mappings(unsigned long s, > > unsigned long e, unsigned int nf) > > if ( l3e_get_flags(*pl3e) & _PAGE_PSE ) > > { > > l2_pgentry_t *l2t; > > + mfn_t mfn; > > nit: I wouldn't mind if these scoped mfns were caled l2t_mfn / l1t_mfn > in this patch, too. > > > > > if ( l2_table_offset(v) == 0 && > > l1_table_offset(v) == 0 && > > @@ -5452,13 +5453,15 @@ int modify_xen_mappings(unsigned long s, > > unsigned long e, unsigned int nf) > > } > > > > /* PAGE1GB: shatter the superpage and fall through. */ > > - l2t = alloc_xen_pagetable(); > > - if ( !l2t ) > > + mfn = alloc_xen_pagetable_new(); > > + if ( mfn_eq(mfn, INVALID_MFN) ) > > { > > ASSERT(rc == -ENOMEM); > > goto out; > > } > > > > + l2t = map_xen_pagetable_new(mfn); > > Is map_xen_pagetable always guaranteed to succeed on a valid mfn (also > in the future)? Otherwise the validity check should be done on l2t as > before instead of mfn. But it looks like map_xen_pagetable{_new} does > not deal with invalid mfns. It is guaranteed to succeed by design. > > > + > > for ( i = 0; i < L2_PAGETABLE_ENTRIES; i++ ) > > l2e_write(l2t + i, > > l2e_from_pfn(l3e_get_pfn(*pl3e) + > > @@ -5469,14 +5472,17 @@ int modify_xen_mappings(unsigned long s, > > unsigned long e, unsigned int nf) > > if ( (l3e_get_flags(*pl3e) & _PAGE_PRESENT) && > > (l3e_get_flags(*pl3e) & _PAGE_PSE) ) > > { > > - l3e_write_atomic(pl3e, > > l3e_from_mfn(virt_to_mfn(l2t), > > - __PAGE_HYPERVISO > > R)); > > + l3e_write_atomic(pl3e, l3e_from_mfn(mfn, > > __PAGE_HYPERVISOR)); > > + UNMAP_XEN_PAGETABLE_NEW(l2t); > > l2t = NULL; > > That NULL assignment is redundant now. It's done by the UNMAP macro. Not yet. This is left as-is intentionally. It depends on what we will do regarding UNMAP_XEN_PAGETABLE. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |