diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2013-02-01 11:25:06 +0100 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-02-01 11:28:36 +0100 |
commit | 68d00bbebb5a48b7a9056a8c03476a71ecbc30a6 (patch) | |
tree | 95af63041b79c43be37d734da6073fc82070f769 /arch/x86/include/asm/pgtable.h | |
parent | x86: Don't panic if can not alloc buffer for swiotlb (diff) | |
parent | x86-32, mm: Remove reference to alloc_remap() (diff) | |
download | linux-68d00bbebb5a48b7a9056a8c03476a71ecbc30a6.tar.xz linux-68d00bbebb5a48b7a9056a8c03476a71ecbc30a6.zip |
Merge remote-tracking branch 'origin/x86/mm' into x86/mm2
Explicitly merging these two branches due to nontrivial conflicts and
to allow further work.
Resolved Conflicts:
arch/x86/kernel/head32.c
arch/x86/kernel/head64.c
arch/x86/mm/init_64.c
arch/x86/realmode/init.c
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/include/asm/pgtable.h')
-rw-r--r-- | arch/x86/include/asm/pgtable.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 3c7c6985045d..b6e41b8cd659 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) { @@ -783,6 +784,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__ */ |