[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V10 5/5] p2m: change_type_range: Only invalidate mapped gfns
On 11/28/18 11:56 PM, Razvan Cojocaru wrote: > change_range_type() invalidates gfn ranges to lazily change the type > of a range of gfns, and also modifies the logdirty rangesets of that > p2m. At the moment, it clips both down by the hostp2m. > > While this will result in correct behavior, it's not entirely efficient, > since invalidated entries outside that range will, on fault, simply be > modified back to "empty" before faulting normally again. > > Separate out the calculation of the two ranges. Keep using the > hostp2m's max_mapped_pfn to clip the logdirty ranges, but use the > current p2m's max_mapped_pfn to further clip the invalidation range > for alternate p2ms. > > Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> > Signed-off-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx> > Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> > > --- > CC: George Dunlap <george.dunlap@xxxxxxxxxxxxx> > CC: Jan Beulich <jbeulich@xxxxxxxx> > CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > CC: "Roger Pau Monné" <roger.pau@xxxxxxxxxx> > > --- > Changes since V9: > - Corrected function name in patch subject. > - Updated the patch to take into account the changes in the > previous two patches (no functional changes). > - Added Jan's Reviewed-by. > --- > xen/arch/x86/mm/p2m.c | 55 > ++++++++++++++++++++++++++++++++++++++------------- > 1 file changed, 41 insertions(+), 14 deletions(-) > > diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c > index fde2012..1907c29 100644 > --- a/xen/arch/x86/mm/p2m.c > +++ b/xen/arch/x86/mm/p2m.c > @@ -1007,8 +1007,10 @@ static void change_type_range(struct p2m_domain *p2m, > unsigned long start, unsigned long end, > p2m_type_t ot, p2m_type_t nt) > { > + unsigned long invalidate_start, invalidate_end; > struct domain *d = p2m->domain; > const unsigned long host_max_pfn = p2m_get_hostp2m(d)->max_mapped_pfn; > + const unsigned long max_pfn = p2m->max_mapped_pfn; > int rc = 0; > > --end; > @@ -1017,9 +1019,18 @@ static void change_type_range(struct p2m_domain *p2m, > printk(XENLOG_G_WARNING "Dom%d logdirty rangeset clipped to > max_mapped_pfn\n", > d->domain_id); > > - /* Always clip the rangeset down to the host p2m */ > + /* > + * If we have an altp2m, the logdirty rangeset range needs to > + * match that of the hostp2m, but for efficiency, we want to clip > + * down the the invalidation range according to the mapped values > + * in the altp2m. Keep track of and clip the ranges separately. > + */ > + invalidate_start = start; > + invalidate_end = end; > + > + /* Clip down to the host p2m */ > if ( unlikely(end > host_max_pfn) ) > - end = host_max_pfn; > + end = invalidate_end = host_max_pfn; Sorry, there seem to be some indentation issues that my editor has missed here. If the patch is otherwise acceptable and these can't be fixed on commit I'll resend a corrected version. Thanks, Razvan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |