[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.9] xen/arm: p2m: Fix incorrect mapping of superpages
On Fri, 19 May 2017, Julien Grall wrote: > The same set of functions is used to set as well as to clean P2M > entries, except for clean operations (INVALID_MFN ~0UL) is passed as a > parameter. Unfortunately, when calculating an appropriate target order > for a particular mapping INVALID_MFN is taken into account which leads > to 4K page target order being set each time even for 2MB and 1GB > mappings. > > This will result to break down the superpage into 4K mappings and leave > empty tables allocated. > > This was introduced by commit 2ef3e36ec7 "xen/arm: p2m: Introduce > p2m_set_entry and __p2m_set_entry". > > Signed-off-by: Julien Grall <julien.grall@xxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > This patch is a candidate for Xen 4.9 and also backporting to Xen 4.8. > Without this patch, removing superpage mapping (2MB, 1GB) will breakdown > into 4K mapping first then remove 4K by 4K. > --- > xen/arch/arm/p2m.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c > index 34d57760d7..752e948070 100644 > --- a/xen/arch/arm/p2m.c > +++ b/xen/arch/arm/p2m.c > @@ -1005,12 +1005,18 @@ int p2m_set_entry(struct p2m_domain *p2m, > > while ( nr ) > { > + unsigned long mask; > + unsigned long order; > + > /* > + * Don't take into account the MFN when removing mapping (i.e > + * MFN_INVALID) to calculate the correct target order. > + * > * XXX: Support superpage mappings if nr is not aligned to a > * superpage size. > */ > - unsigned long mask = gfn_x(sgfn) | mfn_x(smfn) | nr; > - unsigned long order; > + mask = !mfn_eq(smfn, INVALID_MFN) ? mfn_x(smfn) : 0; > + mask |= gfn_x(sgfn) | nr; > > /* Always map 4k by 4k when memaccess is enabled */ > if ( unlikely(p2m->mem_access_enabled) ) > -- > 2.11.0 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |