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>
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
|
|
* Copyright 2003 PathScale, Inc.
|
|
* Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h
|
|
*/
|
|
|
|
#ifndef __UM_PGALLOC_H
|
|
#define __UM_PGALLOC_H
|
|
|
|
#include <linux/mm.h>
|
|
|
|
#include <asm-generic/pgalloc.h>
|
|
|
|
#define pmd_populate_kernel(mm, pmd, pte) \
|
|
set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
|
|
|
|
#define pmd_populate(mm, pmd, pte) \
|
|
set_pmd(pmd, __pmd(_PAGE_TABLE + \
|
|
((unsigned long long)page_to_pfn(pte) << \
|
|
(unsigned long long) PAGE_SHIFT)))
|
|
|
|
/*
|
|
* Allocate and free page tables.
|
|
*/
|
|
extern pgd_t *pgd_alloc(struct mm_struct *);
|
|
|
|
#define __pte_free_tlb(tlb, pte, address) \
|
|
do { \
|
|
pagetable_pte_dtor(page_ptdesc(pte)); \
|
|
tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \
|
|
} while (0)
|
|
|
|
#if CONFIG_PGTABLE_LEVELS > 2
|
|
|
|
#define __pmd_free_tlb(tlb, pmd, address) \
|
|
do { \
|
|
pagetable_pmd_dtor(virt_to_ptdesc(pmd)); \
|
|
tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd)); \
|
|
} while (0)
|
|
|
|
#if CONFIG_PGTABLE_LEVELS > 3
|
|
|
|
#define __pud_free_tlb(tlb, pud, address) \
|
|
do { \
|
|
pagetable_pud_dtor(virt_to_ptdesc(pud)); \
|
|
tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pud)); \
|
|
} while (0)
|
|
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|