All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Dave Hansen <haveblue@us.ibm.com>
Cc: Matt Mackall <mpm@selenic.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	Rusty Russell <rusty@rustcorp.com.au>,
	David Rientjes <rientjes@google.com>,
	Fengguang Wu <wfg@mail.ustc.edu.cn>,
	"ADAM G. LITKE [imap]" <agl@us.ibm.com>
Subject: Re: [PATCH 4/11] maps3: introduce a generic page walker
Date: Mon, 15 Oct 2007 16:20:24 -0700	[thread overview]
Message-ID: <4713F5B8.9000206@goop.org> (raw)
In-Reply-To: <1192489513.6118.111.camel@localhost>

Dave Hansen wrote:
> For now, we should probably document that these functions assume that
> the appropriate locks are held, and that there are no changes being made
> to the pagetables as we walk.
>
> However, I can see that people might want to use these in the future for
> establishing ptes.  Perhaps a special code coming back from the
> ->pte_hole() function could indicate changes were made to the
> pagetables.  I guess we could at least retry part of the loop where the
> hole call was made, like:
>   

Yes.  We already have apply_to_page_range(), which has the side effect
of creating the page range in order to apply a function to it.  It would
be nice to be able to replicate its functionality with this page waker
so we can have just one.

> +int walk_page_range(struct mm_struct *mm,...
> +{
> ...
> +       pgd = pgd_offset(mm, addr);
> +       do {
> +               next = pgd_addr_end(addr, end);
> +               if (pgd_none_or_clear_bad(pgd)) {
> +                       if (walk->pte_hole)
> +                               err = walk->pte_hole(addr, next, private);
> 			if (err == -EAGAIN) { // or whatever we want
> 				pgd--;
> 				err = 0;
> 			}
> +                       if (err)
> +                               break;
> +                       continue;
> +               }
>
> That wouldn't allow changes behind the walker, but it should allow them
> in the range that was walked by the ->pte_hole() function.
>   

Yep.

    J

  reply	other threads:[~2007-10-15 23:20 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-15 22:25 [PATCH 0/11] maps3: pagemap monitoring v3 Matt Mackall
2007-10-15 22:25 ` [PATCH 1/11] maps3: add proportional set size accounting in smaps Matt Mackall
2007-10-15 23:36   ` David Rientjes
2007-10-16  0:18     ` Matt Mackall
2007-10-16  2:24       ` David Rientjes
2007-10-15 22:25 ` [PATCH 2/11] maps3: introduce task_size_of for all arches Matt Mackall
2007-10-15 23:45   ` David Rientjes
2007-10-16  0:36     ` Dave Hansen
2007-10-16  2:26       ` David Rientjes
2007-10-16 17:18         ` maps3: introduce task_size_of for all arches (updated v4) Dave Hansen
2007-10-16 17:25           ` David Rientjes
2007-10-15 22:26 ` [PATCH 3/11] maps3: move is_swap_pte Matt Mackall
2007-10-15 22:26 ` [PATCH 4/11] maps3: introduce a generic page walker Matt Mackall
2007-10-15 22:40   ` Jeremy Fitzhardinge
2007-10-15 23:05     ` Dave Hansen
2007-10-15 23:20       ` Jeremy Fitzhardinge [this message]
2007-10-15 23:30     ` Matt Mackall
2007-10-16  4:58   ` David Rientjes
2007-10-15 22:26 ` [PATCH 5/11] maps3: use pagewalker in clear_refs and smaps Matt Mackall
2007-10-16  5:03   ` David Rientjes
2007-10-15 22:26 ` [PATCH 6/11] maps3: simplify interdependence of maps " Matt Mackall
2007-10-15 22:26 ` [PATCH 7/11] maps3: move clear_refs code to task_mmu.c Matt Mackall
2007-10-16  5:11   ` David Rientjes
2007-10-15 22:26 ` [PATCH 8/11] maps3: regroup task_mmu by interface Matt Mackall
2007-10-15 22:26 ` [PATCH 9/11] maps3: add /proc/pid/pagemap interface Matt Mackall
2007-10-15 22:26 ` [PATCH 10/11] maps3: add /proc/kpagecount and /proc/kpageflags interfaces Matt Mackall
2007-10-15 22:48   ` Dave Hansen
2007-10-15 23:11     ` Matt Mackall
2007-10-15 23:34       ` Dave Hansen
2007-10-16  0:35         ` Matt Mackall
2007-10-16  0:49           ` Dave Hansen
2007-10-16  0:58             ` Matt Mackall
2007-10-16  1:07               ` Dave Hansen
2007-10-15 22:26 ` [PATCH 11/11] maps3: make page monitoring /proc file optional Matt Mackall
2007-10-15 22:49   ` Dave Hansen
2007-10-15 22:51     ` Jeremy Fitzhardinge
2007-10-16  0:03       ` Rusty Russell
2007-10-16  0:20         ` Matt Mackall
2007-10-16  5:25   ` David Rientjes

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=4713F5B8.9000206@goop.org \
    --to=jeremy@goop.org \
    --cc=agl@us.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=haveblue@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=rientjes@google.com \
    --cc=rusty@rustcorp.com.au \
    --cc=wfg@mail.ustc.edu.cn \
    /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.