summaryrefslogtreecommitdiff
path: root/arch/um/include/asm/pgtable-3level.h
diff options
context:
space:
mode:
authorBenjamin Berg <benjamin.berg@intel.com>2024-09-19 14:45:11 +0200
committerJohannes Berg <johannes.berg@intel.com>2024-10-10 13:37:22 +0200
commit41ab5fe7471ff38d2909d1c93b88197a89c6a00f (patch)
treeea76a3b75fd7d8d2b7a4be194e74081113d0b595 /arch/um/include/asm/pgtable-3level.h
parente167cc7a95fe01e228e403ac90090f8613e7d8bc (diff)
downloadlinux-41ab5fe7471ff38d2909d1c93b88197a89c6a00f.tar.gz
linux-41ab5fe7471ff38d2909d1c93b88197a89c6a00f.tar.bz2
linux-41ab5fe7471ff38d2909d1c93b88197a89c6a00f.zip
um: Switch to 4 level page tables on 64 bit
The larger memory space is useful to support more applications inside UML. One example for this is ASAN instrumentation of userspace applications which requires addresses that would otherwise not be available. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20240919124511.282088-11-benjamin@sipsolutions.net Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'arch/um/include/asm/pgtable-3level.h')
-rw-r--r--arch/um/include/asm/pgtable-3level.h91
1 files changed, 0 insertions, 91 deletions
diff --git a/arch/um/include/asm/pgtable-3level.h b/arch/um/include/asm/pgtable-3level.h
deleted file mode 100644
index 3504a92dc485..000000000000
--- a/arch/um/include/asm/pgtable-3level.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright 2003 PathScale Inc
- * Derived from include/asm-i386/pgtable.h
- */
-
-#ifndef __UM_PGTABLE_3LEVEL_H
-#define __UM_PGTABLE_3LEVEL_H
-
-#include <asm-generic/pgtable-nopud.h>
-
-/* PGDIR_SHIFT determines what a third-level page table entry can map */
-
-#define PGDIR_SHIFT 30
-#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
-#define PGDIR_MASK (~(PGDIR_SIZE-1))
-
-/* PMD_SHIFT determines the size of the area a second-level page table can
- * map
- */
-
-#define PMD_SHIFT 21
-#define PMD_SIZE (1UL << PMD_SHIFT)
-#define PMD_MASK (~(PMD_SIZE-1))
-
-/*
- * entries per page directory level
- */
-
-#define PTRS_PER_PTE 512
-#define PTRS_PER_PMD 512
-#define PTRS_PER_PGD 512
-
-#define USER_PTRS_PER_PGD ((TASK_SIZE + (PGDIR_SIZE - 1)) / PGDIR_SIZE)
-
-#define pte_ERROR(e) \
- printk("%s:%d: bad pte %p(%016lx).\n", __FILE__, __LINE__, &(e), \
- pte_val(e))
-#define pmd_ERROR(e) \
- printk("%s:%d: bad pmd %p(%016lx).\n", __FILE__, __LINE__, &(e), \
- pmd_val(e))
-#define pgd_ERROR(e) \
- printk("%s:%d: bad pgd %p(%016lx).\n", __FILE__, __LINE__, &(e), \
- pgd_val(e))
-
-#define pud_none(x) (!(pud_val(x) & ~_PAGE_NEWPAGE))
-#define pud_bad(x) ((pud_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
-#define pud_present(x) (pud_val(x) & _PAGE_PRESENT)
-#define pud_populate(mm, pud, pmd) \
- set_pud(pud, __pud(_PAGE_TABLE + __pa(pmd)))
-
-#define set_pud(pudptr, pudval) (*(pudptr) = (pudval))
-
-static inline int pgd_newpage(pgd_t pgd)
-{
- return(pgd_val(pgd) & _PAGE_NEWPAGE);
-}
-
-static inline void pgd_mkuptodate(pgd_t pgd) { pgd_val(pgd) &= ~_PAGE_NEWPAGE; }
-
-#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
-
-static inline void pud_clear (pud_t *pud)
-{
- set_pud(pud, __pud(_PAGE_NEWPAGE));
-}
-
-#define pud_page(pud) phys_to_page(pud_val(pud) & PAGE_MASK)
-#define pud_pgtable(pud) ((pmd_t *) __va(pud_val(pud) & PAGE_MASK))
-
-static inline unsigned long pte_pfn(pte_t pte)
-{
- return phys_to_pfn(pte_val(pte));
-}
-
-static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
-{
- pte_t pte;
- phys_t phys = pfn_to_phys(page_nr);
-
- pte_set_val(pte, phys, pgprot);
- return pte;
-}
-
-static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
-{
- return __pmd((page_nr << PAGE_SHIFT) | pgprot_val(pgprot));
-}
-
-#endif
-