All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Dave Hansen <dave@linux.vnet.ibm.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
	dave@linux.vnet.ibm.com, tglx@linutronix.de, hpa@linux.intel.com
Subject: [tip:x86/mm] x86, mm: Pagetable level size/shift/mask helpers
Date: Fri, 25 Jan 2013 17:52:33 -0800	[thread overview]
Message-ID: <tip-4cbeb51b860c57ba8b2ae50c4016ee7a41f5fbd5@git.kernel.org> (raw)
In-Reply-To: <20130122212431.405D3A8C@kernel.stglabs.ibm.com>

Commit-ID:  4cbeb51b860c57ba8b2ae50c4016ee7a41f5fbd5
Gitweb:     http://git.kernel.org/tip/4cbeb51b860c57ba8b2ae50c4016ee7a41f5fbd5
Author:     Dave Hansen <dave@linux.vnet.ibm.com>
AuthorDate: Tue, 22 Jan 2013 13:24:31 -0800
Committer:  H. Peter Anvin <hpa@linux.intel.com>
CommitDate: Fri, 25 Jan 2013 16:33:22 -0800

x86, mm: Pagetable level size/shift/mask helpers

I plan to use lookup_address() to walk the kernel pagetables
in a later patch.  It returns a "pte" and the level in the
pagetables where the "pte" was found.  The level is just an
enum and needs to be converted to a useful value in order to
do address calculations with it.  These helpers will be used
in at least two places.

This also gives the anonymous enum a real name so that no one
gets confused about what they should be passing in to these
helpers.

"PTE_SHIFT" was chosen for naming consistency with the other
pagetable levels (PGD/PUD/PMD_SHIFT).

Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20130122212431.405D3A8C@kernel.stglabs.ibm.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
 arch/x86/include/asm/pgtable.h       | 14 ++++++++++++++
 arch/x86/include/asm/pgtable_types.h |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 5199db2..bc28e6f 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -390,6 +390,7 @@ pte_t *populate_extra_pte(unsigned long vaddr);
 
 #ifndef __ASSEMBLY__
 #include <linux/mm_types.h>
+#include <linux/log2.h>
 
 static inline int pte_none(pte_t pte)
 {
@@ -781,6 +782,19 @@ static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
        memcpy(dst, src, count * sizeof(pgd_t));
 }
 
+#define PTE_SHIFT ilog2(PTRS_PER_PTE)
+static inline int page_level_shift(enum pg_level level)
+{
+	return (PAGE_SHIFT - PTE_SHIFT) + level * PTE_SHIFT;
+}
+static inline unsigned long page_level_size(enum pg_level level)
+{
+	return 1UL << page_level_shift(level);
+}
+static inline unsigned long page_level_mask(enum pg_level level)
+{
+	return ~(page_level_size(level) - 1);
+}
 
 #include <asm-generic/pgtable.h>
 #endif	/* __ASSEMBLY__ */
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
index 3c32db8..6c297e7 100644
--- a/arch/x86/include/asm/pgtable_types.h
+++ b/arch/x86/include/asm/pgtable_types.h
@@ -331,7 +331,7 @@ extern void native_pagetable_init(void);
 struct seq_file;
 extern void arch_report_meminfo(struct seq_file *m);
 
-enum {
+enum pg_level {
 	PG_LEVEL_NONE,
 	PG_LEVEL_4K,
 	PG_LEVEL_2M,

  reply	other threads:[~2013-01-26  1:52 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-22 21:24 [PATCH 0/5] [v3] fix illegal use of __pa() in KVM code Dave Hansen
2013-01-22 21:24 ` Dave Hansen
2013-01-22 21:24 ` [PATCH 1/5] make DEBUG_VIRTUAL work earlier in boot Dave Hansen
2013-01-22 21:24   ` Dave Hansen
2013-01-26  1:51   ` [tip:x86/mm] x86, mm: Make " tip-bot for Dave Hansen
2013-01-22 21:24 ` [PATCH 2/5] pagetable level size/shift/mask helpers Dave Hansen
2013-01-22 21:24   ` Dave Hansen
2013-01-26  1:52   ` tip-bot for Dave Hansen [this message]
2013-01-22 21:24 ` [PATCH 3/5] use new pagetable helpers in try_preserve_large_page() Dave Hansen
2013-01-22 21:24   ` Dave Hansen
2013-01-26  1:53   ` [tip:x86/mm] x86, mm: Use " tip-bot for Dave Hansen
2013-01-22 21:24 ` [PATCH 4/5] create slow_virt_to_phys() Dave Hansen
2013-01-22 21:24   ` Dave Hansen
2013-01-26  1:54   ` [tip:x86/mm] x86, mm: Create slow_virt_to_phys() tip-bot for Dave Hansen
2013-01-22 21:24 ` [PATCH 5/5] fix kvm's use of __pa() on percpu areas Dave Hansen
2013-01-22 21:24   ` Dave Hansen
2013-01-23  0:08   ` Marcelo Tosatti
2013-01-23  0:08     ` Marcelo Tosatti
2013-01-26  1:56   ` [tip:x86/mm] x86, kvm: Fix " tip-bot for Dave Hansen
2013-01-25 23:15 ` [PATCH 0/5] [v3] fix illegal use of __pa() in KVM code Dave Hansen
2013-01-25 23:15   ` Dave Hansen
2013-02-24 21:28 ` Peter Hurley
2013-02-24 21:28   ` Peter Hurley
2013-02-25  8:30   ` Gleb Natapov
2013-02-25  8:30     ` Gleb Natapov
2013-02-25 14:42   ` Dave Hansen
2013-02-25 14:42     ` Dave Hansen
2013-02-26 12:45     ` Peter Hurley
2013-02-26 12:45       ` Peter Hurley

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=tip-4cbeb51b860c57ba8b2ae50c4016ee7a41f5fbd5@git.kernel.org \
    --to=dave@linux.vnet.ibm.com \
    --cc=hpa@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    /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.