[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.