From: Olaf Hering <olaf@aepfle.de>
To: Adin Scannell <adin@gridcentric.ca>
Cc: zhen shi <bickys1986@gmail.com>, xen-devel@lists.xensource.com
Subject: Re: Re: mapping problems in xenpaging
Date: Mon, 3 Oct 2011 16:56:16 +0200 [thread overview]
Message-ID: <20111003145616.GA8610@aepfle.de> (raw)
In-Reply-To: <CAAJKtqrFuJkNAZZhRs8tC0ymgQTD0G2VTgYexQ9EhnCxsJNZuw@mail.gmail.com>
On Fri, Sep 30, Adin Scannell wrote:
> >> When we analyze and test xenpaging,we found there are some problems between
> >> mapping and xenpaging.
> >> 1) When mapping firstly, then do xenpaging,and the code paths have resolved
> >> the problems.It's OK.
> >> 2) The problems exists if we do address mapping firstly then go to
> >> xenpaging,and our confusions are as followings:
> >> a) If the domU's memory is directly mapped to dom0,such as the hypercall
> >> from pv driver,then it will build a related page-table in dom0,which will not
> >> change p2m-type.
> >> and then do the xenpaging to page out the domU's memory pages whose gfn
> >> address have been already mapped to dom0;So it will cause some problems when
> >> dom0
> >> accesses these pages.Because these pages are paged-out,and dom0 cannot
> >> tell the p2mt before access the pages.
> >
> > I'm not entirely sure what you do. xenpaging runs in dom0 and is able to
> > map paged-out pages. It uses that to trigger a page-in, see
> > tools/xenpaging/pagein.c in xen-unstable.hg
>
> Here's my take...
>
> Xenpaging doesn't allow selection of pages that have been mapped by
> other domains (as in p2m.c):
>
> 669 int p2m_mem_paging_nominate(struct domain *d, unsigned long gfn)
> ....
> 693 /* Check page count and type */
> 694 page = mfn_to_page(mfn);
> 695 if ( (page->count_info & (PGC_count_mask | PGC_allocated)) !=
> 696 (1 | PGC_allocated) )
> 697 goto out;
>
> *However*, I think that the problem Zhen is describing still exists:
> 1) xenpaging nominates a page, it is successful.
> 2) dom0 maps the same page (a process other than xenpaging, which will
> also map it).
> 3) xenpaging evicts the page, successfully.
>
> I've experienced a few nasty crashes, and I think this could account
> for a couple (but certainly not all)... I think that the solution may
> be to repeat the refcount check in paging_evict, and roll back the
> nomination gracefully if the race is detected. Thoughts?
Are there really code paths that touch a mfn without going through the
p2m functions? If so I will copy the check and update xenpaging.
Olaf
next prev parent reply other threads:[~2011-10-03 14:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-29 14:55 mapping problems in xenpaging zhen shi
2011-09-29 17:02 ` Olaf Hering
2011-09-30 21:02 ` Adin Scannell
2011-09-30 22:19 ` Tim Deegan
2011-10-03 14:56 ` Olaf Hering [this message]
2011-10-06 11:10 ` Tim Deegan
2011-10-09 16:40 ` zhen shi
2011-10-01 3:52 ` zhen shi
-- strict thread matches above, loose matches on Subject: below --
2011-10-10 1:20 Andres Lagar Cavilla
2011-10-10 9:21 ` Tim Deegan
2011-10-10 19:17 ` Andres Lagar Cavilla
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=20111003145616.GA8610@aepfle.de \
--to=olaf@aepfle.de \
--cc=adin@gridcentric.ca \
--cc=bickys1986@gmail.com \
--cc=xen-devel@lists.xensource.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.