All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Rik van Riel <riel@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
	mingo@redhat.com, linux-kernel@vger.kernel.org,
	aarcange@redhat.com, Michel Lespinasse <walken@google.com>
Subject: [PATCH 4/2] numa, mm: Rename the PROT_NONE fault handling functions
Date: Sun, 21 Oct 2012 14:50:07 +0200	[thread overview]
Message-ID: <20121021125007.GB19535@gmail.com> (raw)
In-Reply-To: <20121019205407.GA9132@gmail.com>


* Ingo Molnar <mingo@kernel.org> wrote:

> > > I don't much care either way, but I was thinking walken 
> > > might want to use something similar to do WSS estimation, 
> > > in which case the NUMA name is just as wrong.
> > 
> > That's a good point. I had not considered other uses of the 
> > same code.
> 
> Renaming the functions for more clarity still makes sense IMO: 
> we could give it a _wss or _working_set prefix/postfix?

So, to not drop your patch on the floor I've modified it as per 
the patch below.

The _wss() names signal that these handlers are used for a 
specific purpose, they are not related to the regular PROT_NONE 
handling code.

Agreed?

Thanks,

	Ingo

--------------->
>From 7e426e0f6ffe228118e57a70ae402e21792a0456 Mon Sep 17 00:00:00 2001
From: Rik van Riel <riel@redhat.com>
Date: Thu, 18 Oct 2012 17:20:21 -0400
Subject: [PATCH] numa, mm: Rename the PROT_NONE fault handling functions

Having the function name indicate what the function is used
for makes the code a little easier to read.  Furthermore,
the fault handling code largely consists of do_...._page
functions.

Rename the Working-Set Sampling (WSS) fault handling functions
to indicate what they are used for.

Signed-off-by: Rik van Riel <riel@redhat.com>
Cc: aarcange@redhat.com
Cc: a.p.zijlstra@chello.nl
Link: http://lkml.kernel.org/r/20121018172021.0b1f6e3d@cuia.bos.redhat.com
[ Changed the naming pattern to 'working-set sampling (WSS)' wss_() ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 include/linux/huge_mm.h |  8 ++++----
 mm/huge_memory.c        |  4 ++--
 mm/memory.c             | 18 ++++++++++--------
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index bcbe467..93c6ab5 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -160,9 +160,9 @@ static inline struct page *compound_trans_head(struct page *page)
 	return page;
 }
 
-extern bool pmd_prot_none(struct vm_area_struct *vma, pmd_t pmd);
+extern bool pmd_wss(struct vm_area_struct *vma, pmd_t pmd);
 
-extern void do_huge_pmd_prot_none(struct mm_struct *mm, struct vm_area_struct *vma,
+extern void do_huge_pmd_wss_page(struct mm_struct *mm, struct vm_area_struct *vma,
 				  unsigned long address, pmd_t *pmd,
 				  unsigned int flags, pmd_t orig_pmd);
 
@@ -203,12 +203,12 @@ static inline int pmd_trans_huge_lock(pmd_t *pmd,
 	return 0;
 }
 
-static inline bool pmd_prot_none(struct vm_area_struct *vma, pmd_t pmd)
+static inline bool pmd_wss(struct vm_area_struct *vma, pmd_t pmd)
 {
 	return false;
 }
 
-static inline void do_huge_pmd_prot_none(struct mm_struct *mm, struct vm_area_struct *vma,
+static inline void do_huge_pmd_wss_page(struct mm_struct *mm, struct vm_area_struct *vma,
 				  unsigned long address, pmd_t *pmd,
 				  unsigned int flags, pmd_t orig_pmd)
 {
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index c58a5f0..982f678 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -727,7 +727,7 @@ out:
 	return handle_pte_fault(mm, vma, address, pte, pmd, flags);
 }
 
-bool pmd_prot_none(struct vm_area_struct *vma, pmd_t pmd)
+bool pmd_wss(struct vm_area_struct *vma, pmd_t pmd)
 {
 	/*
 	 * See pte_prot_none().
@@ -738,7 +738,7 @@ bool pmd_prot_none(struct vm_area_struct *vma, pmd_t pmd)
 	return pmd_same(pmd, pmd_modify(pmd, vma_prot_none(vma)));
 }
 
-void do_huge_pmd_prot_none(struct mm_struct *mm, struct vm_area_struct *vma,
+void do_huge_pmd_wss_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			   unsigned long address, pmd_t *pmd,
 			   unsigned int flags, pmd_t entry)
 {
diff --git a/mm/memory.c b/mm/memory.c
index 2cc8a29..a3693e6 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1471,11 +1471,13 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
 }
 EXPORT_SYMBOL_GPL(zap_vma_ptes);
 
-static bool pte_prot_none(struct vm_area_struct *vma, pte_t pte)
+static bool pte_wss(struct vm_area_struct *vma, pte_t pte)
 {
 	/*
-	 * If we have the normal vma->vm_page_prot protections we're not a
-	 * 'special' PROT_NONE page.
+	 * For NUMA page faults, we use PROT_NONE ptes in VMAs with
+	 * "normal" vma->vm_page_prot protections.  Genuine PROT_NONE
+	 * VMAs should never get here, because the fault handling code
+	 * will notice that the VMA has no read or write permissions.
 	 *
 	 * This means we cannot get 'special' PROT_NONE faults from genuine
 	 * PROT_NONE maps, nor from PROT_WRITE file maps that do dirty
@@ -3476,7 +3478,7 @@ static int do_nonlinear_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 	return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
 }
 
-static int do_prot_none(struct mm_struct *mm, struct vm_area_struct *vma,
+static int do_wss_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pte_t *ptep, pmd_t *pmd,
 			unsigned int flags, pte_t entry)
 {
@@ -3601,8 +3603,8 @@ int handle_pte_fault(struct mm_struct *mm,
 					pte, pmd, flags, entry);
 	}
 
-	if (pte_prot_none(vma, entry))
-		return do_prot_none(mm, vma, address, pte, pmd, flags, entry);
+	if (pte_wss(vma, entry))
+		return do_wss_page(mm, vma, address, pte, pmd, flags, entry);
 
 	ptl = pte_lockptr(mm, pmd);
 	spin_lock(ptl);
@@ -3672,8 +3674,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd) && !pmd_trans_splitting(orig_pmd)) {
-			if (pmd_prot_none(vma, orig_pmd)) {
-				do_huge_pmd_prot_none(mm, vma, address, pmd,
+			if (pmd_wss(vma, orig_pmd)) {
+				do_huge_pmd_wss_page(mm, vma, address, pmd,
 						      flags, orig_pmd);
 			}
 

  reply	other threads:[~2012-10-21 12:50 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-18 21:18 [PATCH 0/2] minor NUMA cleanups & documentation Rik van Riel
2012-10-18 21:19 ` [PATCH 1/2] add credits for NUMA placement Rik van Riel
2012-10-19 11:41   ` Peter Zijlstra
2012-10-19 12:02   ` [tip:numa/core] numa: Add " tip-bot for Rik van Riel
2012-10-28 17:11   ` [tip:numa/core] sched, numa, mm: " tip-bot for Rik van Riel
2012-11-13 15:31   ` tip-bot for Rik van Riel
2012-11-13 17:23   ` tip-bot for Rik van Riel
2012-11-19 19:46   ` tip-bot for Rik van Riel
2012-10-18 21:20 ` [PATCH 2/2] rename NUMA fault handling functions Rik van Riel
2012-10-19 11:41   ` Peter Zijlstra
2012-10-19 14:07     ` Rik van Riel
2012-10-19 20:54       ` Ingo Molnar
2012-10-21 12:50         ` Ingo Molnar [this message]
2012-10-21 13:22           ` [PATCH 4/2] numa, mm: Rename the PROT_NONE " Rik van Riel
2012-10-21 13:29             ` Ingo Molnar
2012-10-21 13:43               ` Ingo Molnar
2012-10-20 10:15     ` [PATCH 2/2] rename NUMA " Michel Lespinasse
2012-10-21 15:20   ` [tip:numa/core] numa, mm: Rename the PROT_NONE fault handling functions to *_numa() tip-bot for Rik van Riel
2012-10-23 11:00   ` tip-bot for Rik van Riel
2012-10-21 12:43 ` [PATCH 3/2] sched, numa, mm: Implement constant rate working set sampling Ingo Molnar

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=20121021125007.GB19535@gmail.com \
    --to=mingo@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=aarcange@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=riel@redhat.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.