From: Hongkaixing <hongkaixing@huawei.com>
To: andres@lagarcavilla.org
Cc: xiaowei.yang@huawei.com, olaf@aepfle.de,
xen-devel@lists.xensource.com, andres@gridcentric.ca,
yanqiangjun@huawei.com, tim@xen.org, bicky.shi@huawei.com,
adin@gridcentric.ca
Subject: Re: [PATCH 1 of 2] x86/mm: Allow a page in p2m_ram_paged_out state to be loaded
Date: Thu, 12 Jan 2012 10:24:06 +0800 [thread overview]
Message-ID: <000001ccd0d1$43bfd750$cb3f85f0$@com> (raw)
In-Reply-To: <d3c062de69d4de2a251193814609365c.squirrel@webmail.lagarcavilla.org>
> -----Original Message-----
> From: Andres Lagar-Cavilla [mailto:andres@lagarcavilla.org]
> Sent: Wednesday, January 11, 2012 10:57 PM
> To: Hongkaixing
> Cc: xen-devel@lists.xensource.com; andres@gridcentric.ca; tim@xen.org; olaf@aepfle.de; adin@gridcentric.ca;
> yanqiangjun@huawei.com; bicky.shi@huawei.com; xiaowei.yang@huawei.com
> Subject: RE: [Xen-devel] [PATCH 1 of 2] x86/mm: Allow a page in p2m_ram_paged_out state to be loaded
>
> I think top-posting is frowned upon. Below...
> > I think it may have many unpredicted risks.
> > After p2mt is changed to p2m_ram_rw, Domain guest can access this page
> > unrestrictedly without being trapped in xen.
> > But at this time, the page is not prepared.
>
> Nope. The page has already been allocated and paged-in (copy_from_user out
> of user_ptr) by the time the p2mt is changed
I have got it, first change p2mt to p2m_ram_paging_in, prepare a page, use copy_from_usr to copy, then change p2mt to ram_rw . It
is a good idea.
> Andres
> >
> >> -----Original Message-----
> >> From: xen-devel-bounces@lists.xensource.com
> >> [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Andres
> >> Lagar-Cavilla
> >> Sent: Tuesday, January 10, 2012 5:41 AM
> >> To: xen-devel@lists.xensource.com
> >> Cc: andres@gridcentric.ca; tim@xen.org; olaf@aepfle.de;
> >> adin@gridcentric.ca
> >> Subject: [Xen-devel] [PATCH 1 of 2] x86/mm: Allow a page in
> >> p2m_ram_paged_out state to be loaded
> >>
> >> xen/arch/x86/mm/p2m.c | 15 +++++++++++----
> >> 1 files changed, 11 insertions(+), 4 deletions(-)
> >>
> >>
> >> This removes the need for a page to be accessed in order to be pageable
> >> again. A pager can now page-in pages at will with no need to map them
> >> in a separate thread.
> >>
> >> Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
> >> Acked-by: Tim Deegan <tim@xen.org>
> >>
> >> diff -r 90f764bf02c3 -r f7c330d5b4b5 xen/arch/x86/mm/p2m.c
> >> --- a/xen/arch/x86/mm/p2m.c
> >> +++ b/xen/arch/x86/mm/p2m.c
> >> @@ -964,7 +964,7 @@ void p2m_mem_paging_populate(struct doma
> >> int p2m_mem_paging_prep(struct domain *d, unsigned long gfn, uint64_t
> >> buffer)
> >> {
> >> struct page_info *page;
> >> - p2m_type_t p2mt;
> >> + p2m_type_t p2mt, target_p2mt;
> >> p2m_access_t a;
> >> mfn_t mfn;
> >> struct p2m_domain *p2m = p2m_get_hostp2m(d);
> >> @@ -982,8 +982,8 @@ int p2m_mem_paging_prep(struct domain *d
> >> mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, p2m_query, NULL);
> >>
> >> ret = -ENOENT;
> >> - /* Allow only missing pages */
> >> - if ( p2mt != p2m_ram_paging_in_start )
> >> + /* Allow missing pages */
> >> + if ( (p2mt != p2m_ram_paging_in_start) && (p2mt != p2m_ram_paged) )
> >> goto out;
> >>
> >> /* Allocate a page if the gfn does not have one yet */
> >> @@ -1018,8 +1018,15 @@ int p2m_mem_paging_prep(struct domain *d
> >> }
> >> }
> >>
> >> + target_p2mt = (p2mt == p2m_ram_paging_in_start) ?
> >> + /* If we kicked the pager with a populate event, the pager will
> >> send
> >> + * a resume event back */
> >> + p2m_ram_paging_in :
> >> + /* If this was called asynchronously by the pager, then we can
> >> + * transition directly to the final guest-accessible type */
> >> + (paging_mode_log_dirty(d) ? p2m_ram_logdirty : p2m_ram_rw);
> >> /* Fix p2m mapping */
> >> - set_p2m_entry(p2m, gfn, mfn, PAGE_ORDER_4K, p2m_ram_paging_in, a);
> >> + set_p2m_entry(p2m, gfn, mfn, PAGE_ORDER_4K, target_p2mt, a);
> >>
> >> atomic_dec(&d->paged_pages);
> >>
> >>
> >> _______________________________________________
> >> Xen-devel mailing list
> >> Xen-devel@lists.xensource.com
> >> http://lists.xensource.com/xen-devel
> >
> >
next prev parent reply other threads:[~2012-01-12 2:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-09 21:41 [PATCH 0 of 2] x86/mm: Two hypervisor paging fixes Andres Lagar-Cavilla
2012-01-09 21:41 ` [PATCH 1 of 2] x86/mm: Allow a page in p2m_ram_paged_out state to be loaded Andres Lagar-Cavilla
2012-01-11 7:45 ` Hongkaixing
2012-01-11 14:57 ` Andres Lagar-Cavilla
2012-01-12 2:24 ` Hongkaixing [this message]
2012-01-09 21:41 ` [PATCH 2 of 2] x86/mm: Disable paging_prep Andres Lagar-Cavilla
2012-01-12 10:57 ` [PATCH 0 of 2] x86/mm: Two hypervisor paging fixes Tim Deegan
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='000001ccd0d1$43bfd750$cb3f85f0$@com' \
--to=hongkaixing@huawei.com \
--cc=adin@gridcentric.ca \
--cc=andres@gridcentric.ca \
--cc=andres@lagarcavilla.org \
--cc=bicky.shi@huawei.com \
--cc=olaf@aepfle.de \
--cc=tim@xen.org \
--cc=xen-devel@lists.xensource.com \
--cc=xiaowei.yang@huawei.com \
--cc=yanqiangjun@huawei.com \
/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.