From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: xen-devel@lists.xenproject.org, tim@xen.org,
stefano.stabellini@citrix.com, patches@linaro.org
Subject: Re: [PATCH 7/8] xen/arm: Set foreign page type to p2m_map_foreign
Date: Thu, 05 Dec 2013 17:39:06 +0000 [thread overview]
Message-ID: <52A0BA3A.3090105@linaro.org> (raw)
In-Reply-To: <1386262443.20047.126.camel@kazak.uk.xensource.com>
On 12/05/2013 04:54 PM, Ian Campbell wrote:
> On Thu, 2013-12-05 at 16:41 +0000, Julien Grall wrote:
>
>>>>
>>>> switch ( space )
>>>> {
>>>> @@ -1019,8 +1020,8 @@ static int xenmem_add_to_physmap_one(
>>>> break;
>>>> case XENMAPSPACE_gmfn_foreign:
>>>> {
>>>> - paddr_t maddr;
>>>> struct domain *od;
>>>> + struct page_info *page;
>>>> od = rcu_lock_domain_by_any_id(foreign_domid);
>>>> if ( od == NULL )
>>>> return -ESRCH;
>>>> @@ -1032,15 +1033,18 @@ static int xenmem_add_to_physmap_one(
>>>> return rc;
>>>> }
>>>>
>>>> - maddr = p2m_lookup(od, pfn_to_paddr(idx));
>>>> - if ( maddr == INVALID_PADDR )
>>>> + /* Take refcount to the foreign domain page.
>>>
>>> "on the foreign" (and maybe "domain's" or just "foreign page"
>>>
>>>> + * Refcount will be release in XENMEM_remove_from_physmap */
>>>
>>> "will be released".
>>>
>>> The refcount will also be removed by p2m_teardown. That probably needs
>>> changing to do an actual walk of the p2m tearing things down, which is a
>>> pain.
>>>
>>> Stefano's now obsolete dma pinning series had a patch which added a
>>> fairly generic walker in it which might be reusable.
>>
>> Do you have a link to this patch?
>
> I was afraid you'd say that...
> /scrobbles
>
> "xen/arm: introduce a generic p2m walker and use it in p2m_lookup". v6
> is msgid
> <1380298560-29352-2-git-send-email-stefano.stabellini@eu.citrix.com>. I
> don't recall if that was the last one though.
Actually the generic walker will not be usefull for p2m_teardown. It
seems to be an extension of p2m_lookup, so will only search a specific gfn.
>>
>>> The walk might need to support continuations though.
>>>
>>> I wonder if this ref ought to be taken in create_p2m_entries for all
>>> entries and not just foreign ones, and then released in the appropriate
>>> places.
>>
>> If I'm not mistaken, Xen already takes a ref when the page is allocated
>> for the domain. Why would we need to take another ref for these pages?
>
> There's a nice symmetry to all p2m entries taking a ref count, and it
> makes the teardown a bit simpler since you can just drop the ref every
> time without worrying about the type.
If I'm not mistaken, even x86 code doesn't have 2 ref for each page. Or
I didn't see where the ref is taken/release ...
In any case, walk the whole p2m for looking for present page seems a bit
tough and slow to release memory for a domain.
I'm wondering if we can have a list of foreign page, and browse it when
the domain is destroyed.
--
Julien Grall
next prev parent reply other threads:[~2013-12-05 17:39 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 15:42 [PATCH 0/8] xen/arm: Handle correctly foreign mapping Julien Grall
2013-12-05 15:42 ` [PATCH 1/8] DO NOT APPLY: xen/arm: Correctly support foreign page removing on ARM Julien Grall
2013-12-05 15:42 ` [PATCH 2/8] xen/arm: move mfn_to_p2m_entry in arch/arm/p2m.c Julien Grall
2013-12-05 15:47 ` Ian Campbell
2013-12-05 15:50 ` Julien Grall
2013-12-05 15:42 ` [PATCH 3/8] xen/arm: Implement p2m_type_t as an enum Julien Grall
2013-12-05 15:51 ` Egger, Christoph
2013-12-05 15:56 ` Ian Campbell
2013-12-09 11:16 ` Egger, Christoph
2013-12-09 11:38 ` Ian Campbell
2013-12-05 15:52 ` Ian Campbell
2013-12-05 16:01 ` Julien Grall
2013-12-05 16:14 ` Ian Campbell
2013-12-05 16:28 ` Julien Grall
2013-12-05 16:38 ` Ian Campbell
2013-12-05 16:44 ` Julien Grall
2013-12-05 16:56 ` Ian Campbell
2013-12-05 21:26 ` Julien Grall
2013-12-05 16:07 ` Tim Deegan
2013-12-05 16:19 ` Ian Campbell
2013-12-05 16:31 ` Tim Deegan
2013-12-05 16:39 ` Ian Campbell
2013-12-05 17:24 ` Tim Deegan
2013-12-05 15:42 ` [PATCH 4/8] xen/arm: Store p2m type in each page of the guest Julien Grall
2013-12-05 15:55 ` Ian Campbell
2013-12-05 16:02 ` Ian Campbell
2013-12-05 16:07 ` Julien Grall
2013-12-05 15:42 ` [PATCH 5/8] xen/arm: p2m: Add p2m_get_entry Julien Grall
2013-12-05 16:07 ` Ian Campbell
2013-12-05 16:09 ` Tim Deegan
2013-12-05 15:42 ` [PATCH 6/8] xen/arm: Retrieve p2m type in get_page_from_gfn Julien Grall
2013-12-05 16:23 ` Ian Campbell
2013-12-05 16:45 ` Julien Grall
2013-12-09 2:36 ` Julien Grall
2013-12-09 9:57 ` Ian Campbell
2013-12-05 15:42 ` [PATCH 7/8] xen/arm: Set foreign page type to p2m_map_foreign Julien Grall
2013-12-05 16:34 ` Ian Campbell
2013-12-05 16:41 ` Julien Grall
2013-12-05 16:54 ` Ian Campbell
2013-12-05 17:39 ` Julien Grall [this message]
2013-12-05 17:49 ` Ian Campbell
2013-12-09 2:14 ` Julien Grall
2013-12-05 15:42 ` [PATCH 8/8] xen/arm: grant-table: Support read-only mapping Julien Grall
2013-12-05 16:36 ` Ian Campbell
2013-12-05 15:44 ` [PATCH 0/8] xen/arm: Handle correctly foreign mapping Julien Grall
2013-12-05 17:10 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52A0BA3A.3090105@linaro.org \
--to=julien.grall@linaro.org \
--cc=Ian.Campbell@citrix.com \
--cc=patches@linaro.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.