summaryrefslogtreecommitdiff
path: root/include/linux/pgalloc.h
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2025-09-08 17:12:46 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2025-09-08 17:12:46 -0300
commitc1ead4b4dfe0f643cfc66571ca7d2fa332eddd35 (patch)
treea22ad44bdcc8ea38401cc129e75f15fb4c533317 /include/linux/pgalloc.h
parent75a7b9d29215c5aa813b9620f3c56817918f9f8c (diff)
parentf777d1112ee597d7f7dd3ca232220873a34ad0c8 (diff)
Merge remote-tracking branch 'torvalds/master' into perf-tools-next
To pick the fixes sent by Namhyung for tools/perf for v6.17-rc5 and get closer to the other tools code that is used by tools/perf. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'include/linux/pgalloc.h')
-rw-r--r--include/linux/pgalloc.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/linux/pgalloc.h b/include/linux/pgalloc.h
new file mode 100644
index 000000000000..9174fa59bbc5
--- /dev/null
+++ b/include/linux/pgalloc.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_PGALLOC_H
+#define _LINUX_PGALLOC_H
+
+#include <linux/pgtable.h>
+#include <asm/pgalloc.h>
+
+/*
+ * {pgd,p4d}_populate_kernel() are defined as macros to allow
+ * compile-time optimization based on the configured page table levels.
+ * Without this, linking may fail because callers (e.g., KASAN) may rely
+ * on calls to these functions being optimized away when passing symbols
+ * that exist only for certain page table levels.
+ */
+#define pgd_populate_kernel(addr, pgd, p4d) \
+ do { \
+ pgd_populate(&init_mm, pgd, p4d); \
+ if (ARCH_PAGE_TABLE_SYNC_MASK & PGTBL_PGD_MODIFIED) \
+ arch_sync_kernel_mappings(addr, addr); \
+ } while (0)
+
+#define p4d_populate_kernel(addr, p4d, pud) \
+ do { \
+ p4d_populate(&init_mm, p4d, pud); \
+ if (ARCH_PAGE_TABLE_SYNC_MASK & PGTBL_P4D_MODIFIED) \
+ arch_sync_kernel_mappings(addr, addr); \
+ } while (0)
+
+#endif /* _LINUX_PGALLOC_H */