mm: add missing __PAGETABLE_{PUD,PMD}_FOLDED defines
Core mm expects __PAGETABLE_{PUD,PMD}_FOLDED to be defined if these page table levels folded. Usually, these defines are provided by <asm-generic/pgtable-nopmd.h> and <asm-generic/pgtable-nopud.h>. But some architectures fold page table levels in a custom way. They need to define these macros themself. This patch adds missing defines. The patch fixes mm->nr_pmds underflow and eliminates dead __pmd_alloc() and __pud_alloc() on architectures without these page table levels. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: David Howells <dhowells@redhat.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Helge Deller <deller@gmx.de> Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cc87317726
commit
c07af4f1ce
6 changed files with 10 additions and 0 deletions
|
@ -123,12 +123,14 @@ extern unsigned long empty_zero_page;
|
|||
#define PGDIR_MASK (~(PGDIR_SIZE - 1))
|
||||
#define PTRS_PER_PGD 64
|
||||
|
||||
#define __PAGETABLE_PUD_FOLDED
|
||||
#define PUD_SHIFT 26
|
||||
#define PTRS_PER_PUD 1
|
||||
#define PUD_SIZE (1UL << PUD_SHIFT)
|
||||
#define PUD_MASK (~(PUD_SIZE - 1))
|
||||
#define PUE_SIZE 256
|
||||
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PMD_SHIFT 26
|
||||
#define PMD_SIZE (1UL << PMD_SHIFT)
|
||||
#define PMD_MASK (~(PMD_SIZE - 1))
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* the M32R is two-level, so we don't really have any
|
||||
* PMD directory physically.
|
||||
*/
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PMD_SHIFT 22
|
||||
#define PTRS_PER_PMD 1
|
||||
|
||||
|
|
|
@ -54,10 +54,12 @@
|
|||
*/
|
||||
#ifdef CONFIG_SUN3
|
||||
#define PTRS_PER_PTE 16
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PTRS_PER_PMD 1
|
||||
#define PTRS_PER_PGD 2048
|
||||
#elif defined(CONFIG_COLDFIRE)
|
||||
#define PTRS_PER_PTE 512
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PTRS_PER_PMD 1
|
||||
#define PTRS_PER_PGD 1024
|
||||
#else
|
||||
|
|
|
@ -56,7 +56,9 @@ extern void paging_init(void);
|
|||
#define PGDIR_SHIFT 22
|
||||
#define PTRS_PER_PGD 1024
|
||||
#define PTRS_PER_PUD 1 /* we don't really have any PUD physically */
|
||||
#define __PAGETABLE_PUD_FOLDED
|
||||
#define PTRS_PER_PMD 1 /* we don't really have any PMD physically */
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PTRS_PER_PTE 1024
|
||||
|
||||
#define PGD_SIZE PAGE_SIZE
|
||||
|
|
|
@ -96,6 +96,7 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long);
|
|||
#if PT_NLEVELS == 3
|
||||
#define BITS_PER_PMD (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY)
|
||||
#else
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define BITS_PER_PMD 0
|
||||
#endif
|
||||
#define PTRS_PER_PMD (1UL << BITS_PER_PMD)
|
||||
|
|
|
@ -91,7 +91,9 @@ extern unsigned long zero_page_mask;
|
|||
*/
|
||||
#define PTRS_PER_PTE 256
|
||||
#ifndef CONFIG_64BIT
|
||||
#define __PAGETABLE_PUD_FOLDED
|
||||
#define PTRS_PER_PMD 1
|
||||
#define __PAGETABLE_PMD_FOLDED
|
||||
#define PTRS_PER_PUD 1
|
||||
#else /* CONFIG_64BIT */
|
||||
#define PTRS_PER_PMD 2048
|
||||
|
|
Loading…
Reference in a new issue