|
@@ -132,41 +132,6 @@ static inline pud_t native_pudp_get_and_clear(pud_t *xp)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Page table pages are page-aligned. The lower half of the top
|
|
|
- * level is used for userspace and the top half for the kernel.
|
|
|
- *
|
|
|
- * Returns true for parts of the PGD that map userspace and
|
|
|
- * false for the parts that map the kernel.
|
|
|
- */
|
|
|
-static inline bool pgdp_maps_userspace(void *__ptr)
|
|
|
-{
|
|
|
- unsigned long ptr = (unsigned long)__ptr;
|
|
|
-
|
|
|
- return (ptr & ~PAGE_MASK) < (PAGE_SIZE / 2);
|
|
|
-}
|
|
|
-
|
|
|
-#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
|
|
-pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd);
|
|
|
-
|
|
|
-/*
|
|
|
- * Take a PGD location (pgdp) and a pgd value that needs to be set there.
|
|
|
- * Populates the user and returns the resulting PGD that must be set in
|
|
|
- * the kernel copy of the page tables.
|
|
|
- */
|
|
|
-static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
|
|
-{
|
|
|
- if (!static_cpu_has(X86_FEATURE_PTI))
|
|
|
- return pgd;
|
|
|
- return __pti_set_user_pgtbl(pgdp, pgd);
|
|
|
-}
|
|
|
-#else
|
|
|
-static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
|
|
-{
|
|
|
- return pgd;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
static inline void native_set_p4d(p4d_t *p4dp, p4d_t p4d)
|
|
|
{
|
|
|
pgd_t pgd;
|
|
@@ -206,7 +171,6 @@ extern void sync_global_pgds(unsigned long start, unsigned long end);
|
|
|
/*
|
|
|
* Level 4 access.
|
|
|
*/
|
|
|
-static inline int pgd_large(pgd_t pgd) { return 0; }
|
|
|
#define mk_kernel_pgd(address) __pgd((address) | _KERNPG_TABLE)
|
|
|
|
|
|
/* PUD - Level3 access */
|