This variable is used by lots of arch/*/include/asm/ headers, but
these do not (and should not) include the huge linux/mm.h header.
Let's move this "extern" variable to a separate header and include
this one in arch/.
Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
---
arch/arm/include/asm/memory.h | 4 ++++
arch/arm/include/asm/pgtable.h | 2 ++
arch/csky/include/asm/page.h | 1 +
arch/hexagon/include/asm/mem-layout.h | 4 ++++
arch/m68k/include/asm/page_mm.h | 1 +
arch/m68k/include/asm/pgtable_mm.h | 1 +
arch/parisc/include/asm/floppy.h | 1 +
arch/powerpc/include/asm/book3s/32/pgtable.h | 4 ++++
arch/powerpc/include/asm/nohash/32/pgtable.h | 1 +
arch/powerpc/include/asm/page.h | 1 +
arch/x86/include/asm/floppy.h | 1 +
arch/x86/include/asm/pgtable_32_areas.h | 4 ++++
drivers/mtd/nand/onenand/onenand_samsung.c | 1 +
include/linux/mm.h | 2 +-
include/linux/mm/high_memory.h | 7 +++++++
15 files changed, 34 insertions(+), 1 deletion(-)
create mode 100644 include/linux/mm/high_memory.h
@@ -387,6 +387,10 @@ static inline unsigned long __virt_to_idmap(unsigned long x)
*/
#define ARCH_PFN_OFFSET PHYS_PFN_OFFSET
+#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
+#endif
+
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
#define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) \
&& pfn_valid(virt_to_pfn(kaddr)))
@@ -11,6 +11,8 @@
#include <asm/proc-fns.h>
#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
+
/*
* ZERO_PAGE is a global shared page that is always zero: used
* for zero-mapped memory areas etc..
@@ -32,6 +32,7 @@
#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
#include <linux/pfn.h>
#define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && \
@@ -10,6 +10,10 @@
#include <linux/const.h>
+#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
+#endif
+
/*
* Have to do this for ginormous numbers, else they get printed as
* negative numbers, which the linker no likey when you try to
@@ -5,6 +5,7 @@
#ifndef __ASSEMBLY__
#include <linux/compiler.h>
+#include <linux/mm/high_memory.h>
#include <asm/module.h>
/*
@@ -13,6 +13,7 @@
#ifndef __ASSEMBLY__
#include <asm/processor.h>
+#include <linux/mm/high_memory.h>
#include <linux/sched.h>
#include <linux/threads.h>
@@ -8,6 +8,7 @@
#ifndef __ASM_PARISC_FLOPPY_H
#define __ASM_PARISC_FLOPPY_H
+#include <linux/mm/high_memory.h>
#include <linux/vmalloc.h>
@@ -4,6 +4,10 @@
#include <asm-generic/pgtable-nopmd.h>
+#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
+#endif
+
/*
* The "classic" 32-bit implementation of the PowerPC MMU uses a hash
* table containing PTEs, together with a set of 16 segment registers,
@@ -5,6 +5,7 @@
#include <asm-generic/pgtable-nopmd.h>
#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
#include <linux/sched.h>
#include <linux/threads.h>
#include <asm/mmu.h> /* For sub-arch specific PPC_PIN_SIZE */
@@ -7,6 +7,7 @@
*/
#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/bug.h>
@@ -10,6 +10,7 @@
#ifndef _ASM_X86_FLOPPY_H
#define _ASM_X86_FLOPPY_H
+#include <linux/mm/high_memory.h>
#include <linux/vmalloc.h>
/*
@@ -3,6 +3,10 @@
#include <asm/cpu_entry_area.h>
+#ifndef __ASSEMBLY__
+#include <linux/mm/high_memory.h>
+#endif
+
/*
* Just any arbitrary offset to the start of the vmalloc VM area: the
* current 8MB value just means that there will be a 8MB "hole" after the
@@ -15,6 +15,7 @@
#include <linux/platform_device.h>
#include <linux/sched.h>
#include <linux/slab.h>
+#include <linux/mm/high_memory.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/onenand.h>
#include <linux/mtd/partitions.h>
@@ -6,6 +6,7 @@
#include <linux/mm/folio_size.h>
#include <linux/mm/folio_usage.h>
#include <linux/mm/folio_zone.h>
+#include <linux/mm/high_memory.h>
#include <linux/mm/page_address.h>
#include <linux/mm/page_section.h>
#include <linux/mm/pfmemalloc.h>
@@ -81,7 +82,6 @@ static inline void totalram_pages_add(long count)
atomic_long_add(count, &_totalram_pages);
}
-extern void * high_memory;
extern int page_cluster;
extern const int page_cluster_max;
new file mode 100644
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_MM_HIGH_MEMORY_H
+#define _LINUX_MM_HIGH_MEMORY_H
+
+extern void * high_memory;
+
+#endif /* _LINUX_MM_HIGH_MEMORY_H */