[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 13/18] x86/mem_sharing: Skip xen heap pages in memshr nominate
On 20.01.2020 17:32, Tamas K Lengyel wrote: > On Mon, Jan 20, 2020 at 9:23 AM Jan Beulich <jbeulich@xxxxxxxx> wrote: >> >> On 08.01.2020 18:14, Tamas K Lengyel wrote: >>> Trying to share these would fail anyway, better to skip them early. >>> >>> Signed-off-by: Tamas K Lengyel <tamas.lengyel@xxxxxxxxx> >> >> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> >> albeit I wonder if this couldn't be further generalized by ... >> >>> --- a/xen/arch/x86/mm/mem_sharing.c >>> +++ b/xen/arch/x86/mm/mem_sharing.c >>> @@ -852,6 +852,11 @@ static int nominate_page(struct domain *d, gfn_t gfn, >>> if ( !p2m_is_sharable(p2mt) ) >>> goto out; >>> >>> + /* Skip xen heap pages */ >>> + page = mfn_to_page(mfn); >>> + if ( !page || is_xen_heap_page(page) ) >>> + goto out; >> >> ... checking for a zero type ref count (the only means to permit >> a type change) here, and maybe also ->count_info to fit what >> page_make_sharable() expects. > > Not sure I follow you, type count is checked by page_make_sharable but > it has to be exactly 1: > > /* Check if page is already typed and bail early if it is */ > if ( (page->u.inuse.type_info & PGT_count_mask) != 1 ) > { > spin_unlock(&d->page_alloc_lock); > return -EEXIST; > } Which is after a successful get_page_and_type(). Prior to that, therefore, the count ought to be zero. But maybe I'm very confused - see also my comments on patch 14, where I spotted this very same anomaly. > I specifically want to avoid calling page_make_sharable on xen heap > pages because they end up printing an error to the console which is > very annoying. That's fine. I'm not asking to drop what you're doing. Instead I'm asking whether you couldn't bail early in even more cases. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |