arm64: mm: Move PCI I/O emulation region above the vmemmap region
authorArd Biesheuvel <ardb@kernel.org>
Wed, 13 Dec 2023 08:40:26 +0000 (09:40 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 9 Feb 2024 10:56:10 +0000 (10:56 +0000)
Move the PCI I/O region above the vmemmap region in the kernel's VA
space. This will permit us to reclaim the lower part of the vmemmap
region for vmalloc/vmap allocations when running a 52-bit VA capable
build on a 48-bit VA capable system.

Also, given that PCI_IO_START is derived from VMEMMAP_END, use that
symbolic constant directly in ptdump rather than deriving it from
VMEMMAP_START and VMEMMAP_SIZE, as those definitions will change in
subsequent patches.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20231213084024.2367360-10-ardb@google.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
arch/arm64/include/asm/memory.h
arch/arm64/mm/ptdump.c

index d82305ab420f74cb56ce65a373a7380fb6321c37..b04fa8a8a262b4ec9b1f9cccbfd002f6f54954b4 100644 (file)
@@ -49,8 +49,8 @@
 #define MODULES_VSIZE          (SZ_2G)
 #define VMEMMAP_START          (-(UL(1) << (VA_BITS - VMEMMAP_SHIFT)))
 #define VMEMMAP_END            (VMEMMAP_START + VMEMMAP_SIZE)
-#define PCI_IO_END             (VMEMMAP_START - SZ_8M)
-#define PCI_IO_START           (PCI_IO_END - PCI_IO_SIZE)
+#define PCI_IO_START           (VMEMMAP_END + SZ_8M)
+#define PCI_IO_END             (PCI_IO_START + PCI_IO_SIZE)
 #define FIXADDR_TOP            (VMEMMAP_START - SZ_32M)
 
 #if VA_BITS > 48
index e305b6593c4e234c7e1e24d3fcf9872e54089967..46acb2a24da083f98ab907bca263fc5c225c885b 100644 (file)
@@ -47,10 +47,10 @@ static struct addr_marker address_markers[] = {
        { VMALLOC_END,                  "vmalloc() end" },
        { FIXADDR_TOT_START,            "Fixmap start" },
        { FIXADDR_TOP,                  "Fixmap end" },
+       { VMEMMAP_START,                "vmemmap start" },
+       { VMEMMAP_END,                  "vmemmap end" },
        { PCI_IO_START,                 "PCI I/O start" },
        { PCI_IO_END,                   "PCI I/O end" },
-       { VMEMMAP_START,                "vmemmap start" },
-       { VMEMMAP_START + VMEMMAP_SIZE, "vmemmap end" },
        { -1,                           NULL },
 };