All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: John Stultz <john.stultz@linaro.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Android Kernel Team <kernel-team@android.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Robert Love <rlove@google.com>, Mel Gorman <mel@csn.ul.ie>,
	Hugh Dickins <hughd@google.com>, Dave Hansen <dave@sr71.net>,
	Rik van Riel <riel@redhat.com>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>,
	Neil Brown <neilb@suse.de>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Mike Hommey <mh@glandium.org>, Taras Glek <tglek@mozilla.com>,
	Jan Kara <jack@suse.cz>,
	KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
	Michel Lespinasse <walken@google.com>,
	Keith Packard <keithp@keithp.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [PATCH 3/4] MADV_VOLATILE: Add purged page detection on setting memory non-volatile
Date: Fri, 9 May 2014 08:45:04 +0900	[thread overview]
Message-ID: <20140508234504.GC25951@bbox> (raw)
In-Reply-To: <536BFAF7.4020405@linaro.org>

On Thu, May 08, 2014 at 02:45:27PM -0700, John Stultz wrote:
> On 05/07/2014 06:51 PM, Minchan Kim wrote:
> > On Tue, Apr 29, 2014 at 02:21:22PM -0700, John Stultz wrote:
> >> +/**
> >> + * mvolatile_check_purged_pte - Checks ptes for purged pages
> >> + * @pmd: pmd to walk
> >> + * @addr: starting address
> >> + * @end: end address
> >> + * @walk: mm_walk ptr (contains ptr to mvolatile_walker)
> >> + *
> >> + * Iterates over the ptes in the pmd checking if they have
> >> + * purged swap entries.
> >> + *
> >> + * Sets the mvolatile_walker.page_was_purged to 1 if any were purged,
> >> + * and clears the purged pte swp entries (since the pages are no
> >> + * longer volatile, we don't want future accesses to SIGBUS).
> >> + */
> >> +static int mvolatile_check_purged_pte(pmd_t *pmd, unsigned long addr,
> >> +					unsigned long end, struct mm_walk *walk)
> >> +{
> >> +	struct mvolatile_walker *vw = walk->private;
> >> +	pte_t *pte;
> >> +	spinlock_t *ptl;
> >> +
> >> +	if (pmd_trans_huge(*pmd))
> >> +		return 0;
> >> +	if (pmd_trans_unstable(pmd))
> >> +		return 0;
> >> +
> >> +	pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
> >> +	for (; addr != end; pte++, addr += PAGE_SIZE) {
> >> +		if (!pte_present(*pte)) {
> >> +			swp_entry_t mvolatile_entry = pte_to_swp_entry(*pte);
> >> +
> >> +			if (unlikely(is_purged_entry(mvolatile_entry))) {
> >> +
> >> +				vw->page_was_purged = 1;
> >> +
> >> +				/* clear the pte swp entry */
> >> +				flush_cache_page(vw->vma, addr, pte_pfn(*pte));
> > Maybe we don't need to flush the cache because there is no mapped page.
> >
> >> +				ptep_clear_flush(vw->vma, addr, pte);
> > Maybe we don't need this, either. We didn't set present bit for purged
> > page but when I look at the internal of ptep_clear_flush, it checks present bit
> > and skip the TLB flush so it's okay for x86 but not sure other architecture.
> > More clear function for our purpose would be pte_clear_not_present_full.
> 
> Ok.. basically I just wanted to zap the psudo-swp entry, so it will be
> zero-filled from here on out.
> 
> 
> > And we are changing page table so at least, we need to handle mmu_notifier to
> > inform that to the client of mmu_notifier.
> 
> So yes, this is one item from my last iteration that I didn't act on
> yet. It wasn't clear to me here that we need to do the mmu_notifier,
> since the page is evicted earlier via try_to_purge_one (and we do notify
> then). But in just removing the psudo-swap entry we need to do a
> notification as well? Is there someplace where the mmu_notifier rules

Hmm, it seems your claim is reasonable so we don't need to call it again, sorry.
But let's double check with KVM people.

> are better documented?
> 
> thanks
> -john
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Kind regards,
Minchan Kim

WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: John Stultz <john.stultz@linaro.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Android Kernel Team <kernel-team@android.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Robert Love <rlove@google.com>, Mel Gorman <mel@csn.ul.ie>,
	Hugh Dickins <hughd@google.com>, Dave Hansen <dave@sr71.net>,
	Rik van Riel <riel@redhat.com>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>,
	Neil Brown <neilb@suse.de>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Mike Hommey <mh@glandium.org>, Taras Glek <tglek@mozilla.com>,
	Jan Kara <jack@suse.cz>,
	KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
	Michel Lespinasse <walken@google.com>,
	Keith Packard <keithp@keithp.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [PATCH 3/4] MADV_VOLATILE: Add purged page detection on setting memory non-volatile
Date: Fri, 9 May 2014 08:45:04 +0900	[thread overview]
Message-ID: <20140508234504.GC25951@bbox> (raw)
In-Reply-To: <536BFAF7.4020405@linaro.org>

On Thu, May 08, 2014 at 02:45:27PM -0700, John Stultz wrote:
> On 05/07/2014 06:51 PM, Minchan Kim wrote:
> > On Tue, Apr 29, 2014 at 02:21:22PM -0700, John Stultz wrote:
> >> +/**
> >> + * mvolatile_check_purged_pte - Checks ptes for purged pages
> >> + * @pmd: pmd to walk
> >> + * @addr: starting address
> >> + * @end: end address
> >> + * @walk: mm_walk ptr (contains ptr to mvolatile_walker)
> >> + *
> >> + * Iterates over the ptes in the pmd checking if they have
> >> + * purged swap entries.
> >> + *
> >> + * Sets the mvolatile_walker.page_was_purged to 1 if any were purged,
> >> + * and clears the purged pte swp entries (since the pages are no
> >> + * longer volatile, we don't want future accesses to SIGBUS).
> >> + */
> >> +static int mvolatile_check_purged_pte(pmd_t *pmd, unsigned long addr,
> >> +					unsigned long end, struct mm_walk *walk)
> >> +{
> >> +	struct mvolatile_walker *vw = walk->private;
> >> +	pte_t *pte;
> >> +	spinlock_t *ptl;
> >> +
> >> +	if (pmd_trans_huge(*pmd))
> >> +		return 0;
> >> +	if (pmd_trans_unstable(pmd))
> >> +		return 0;
> >> +
> >> +	pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
> >> +	for (; addr != end; pte++, addr += PAGE_SIZE) {
> >> +		if (!pte_present(*pte)) {
> >> +			swp_entry_t mvolatile_entry = pte_to_swp_entry(*pte);
> >> +
> >> +			if (unlikely(is_purged_entry(mvolatile_entry))) {
> >> +
> >> +				vw->page_was_purged = 1;
> >> +
> >> +				/* clear the pte swp entry */
> >> +				flush_cache_page(vw->vma, addr, pte_pfn(*pte));
> > Maybe we don't need to flush the cache because there is no mapped page.
> >
> >> +				ptep_clear_flush(vw->vma, addr, pte);
> > Maybe we don't need this, either. We didn't set present bit for purged
> > page but when I look at the internal of ptep_clear_flush, it checks present bit
> > and skip the TLB flush so it's okay for x86 but not sure other architecture.
> > More clear function for our purpose would be pte_clear_not_present_full.
> 
> Ok.. basically I just wanted to zap the psudo-swp entry, so it will be
> zero-filled from here on out.
> 
> 
> > And we are changing page table so at least, we need to handle mmu_notifier to
> > inform that to the client of mmu_notifier.
> 
> So yes, this is one item from my last iteration that I didn't act on
> yet. It wasn't clear to me here that we need to do the mmu_notifier,
> since the page is evicted earlier via try_to_purge_one (and we do notify
> then). But in just removing the psudo-swap entry we need to do a
> notification as well? Is there someplace where the mmu_notifier rules

Hmm, it seems your claim is reasonable so we don't need to call it again, sorry.
But let's double check with KVM people.

> are better documented?
> 
> thanks
> -john
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2014-05-08 23:43 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-29 21:21 [PATCH 0/4] Volatile Ranges (v14 - madvise reborn edition!) John Stultz
2014-04-29 21:21 ` John Stultz
2014-04-29 21:21 ` [PATCH 1/4] swap: Cleanup how special swap file numbers are defined John Stultz
2014-04-29 21:21   ` John Stultz
2014-04-29 21:21 ` [PATCH 2/4] MADV_VOLATILE: Add MADV_VOLATILE/NONVOLATILE hooks and handle marking vmas John Stultz
2014-04-29 21:21   ` John Stultz
2014-05-08  1:21   ` Minchan Kim
2014-05-08  1:21     ` Minchan Kim
2014-05-08 16:38     ` John Stultz
2014-05-08 16:38       ` John Stultz
2014-05-08 23:12       ` Minchan Kim
2014-05-08 23:12         ` Minchan Kim
2014-05-08 23:43         ` John Stultz
2014-05-08 23:43           ` John Stultz
2014-05-09  0:07           ` Minchan Kim
2014-05-09  0:07             ` Minchan Kim
2014-05-09  0:24             ` John Stultz
2014-05-09  0:24               ` John Stultz
2014-05-09  0:41               ` Minchan Kim
2014-05-09  0:41                 ` Minchan Kim
2014-04-29 21:21 ` [PATCH 3/4] MADV_VOLATILE: Add purged page detection on setting memory non-volatile John Stultz
2014-04-29 21:21   ` John Stultz
2014-05-08  1:51   ` Minchan Kim
2014-05-08  1:51     ` Minchan Kim
2014-05-08 21:45     ` John Stultz
2014-05-08 21:45       ` John Stultz
2014-05-08 23:45       ` Minchan Kim [this message]
2014-05-08 23:45         ` Minchan Kim
2014-04-29 21:21 ` [PATCH 4/4] MADV_VOLATILE: Add page purging logic & SIGBUS trap John Stultz
2014-04-29 21:21   ` John Stultz
2014-05-08  5:16   ` Minchan Kim
2014-05-08  5:16     ` Minchan Kim
2014-05-08 16:39     ` John Stultz
2014-05-08 16:39       ` John Stultz
2014-05-08  5:58 ` [PATCH 0/4] Volatile Ranges (v14 - madvise reborn edition!) Minchan Kim
2014-05-08  5:58   ` Minchan Kim
2014-05-08 17:04   ` John Stultz
2014-05-08 17:04     ` John Stultz
2014-05-08 23:29     ` Minchan Kim
2014-05-08 23:29       ` Minchan Kim
2014-05-08 17:12 ` John Stultz
2014-05-08 17:12   ` John Stultz
2014-06-03 14:57   ` Johannes Weiner
2014-06-03 14:57     ` Johannes Weiner
2014-06-16 20:12     ` John Stultz
2014-06-16 20:12       ` John Stultz
2014-06-16 22:24       ` Andrea Arcangeli
2014-06-16 22:24         ` Andrea Arcangeli

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=20140508234504.GC25951@bbox \
    --to=minchan@kernel.org \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave@sr71.net \
    --cc=dmitry.adamushko@gmail.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=jack@suse.cz \
    --cc=john.stultz@linaro.org \
    --cc=keithp@keithp.com \
    --cc=kernel-team@android.com \
    --cc=kosaki.motohiro@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=mh@glandium.org \
    --cc=neilb@suse.de \
    --cc=riel@redhat.com \
    --cc=rlove@google.com \
    --cc=tglek@mozilla.com \
    --cc=walken@google.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.