powerpc/mm/hash64: Add a variable to track the end of IO mapping
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Wed, 17 Apr 2019 12:59:13 +0000 (18:29 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 21 Apr 2019 13:12:39 +0000 (23:12 +1000)
This makes it easy to update the region mapping in the later patch

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/book3s/64/hash.h
arch/powerpc/include/asm/book3s/64/pgtable.h
arch/powerpc/include/asm/book3s/64/radix.h
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/pgtable-radix.c
arch/powerpc/mm/pgtable_64.c

index 54b7af6cd27f312194accf08d70e160c212a0848..8cbc4106d44933d13a66e50afb896a7002394dd6 100644 (file)
@@ -69,7 +69,8 @@
 #define H_VMALLOC_SIZE (H_KERN_VIRT_SIZE - H_KERN_IO_SIZE)
 #define H_VMALLOC_END  (H_VMALLOC_START + H_VMALLOC_SIZE)
 
-#define H_KERN_IO_START H_VMALLOC_END
+#define H_KERN_IO_START        H_VMALLOC_END
+#define H_KERN_IO_END  (H_KERN_VIRT_START + H_KERN_VIRT_SIZE)
 
 /*
  * Region IDs
index e3d18b3f6e5d42b71b080591cc2577a2021e9a98..f8ab18f77d1ba9be5988a36672ae9aaba6262c2f 100644 (file)
@@ -277,9 +277,12 @@ extern unsigned long __vmalloc_end;
 extern unsigned long __kernel_virt_start;
 extern unsigned long __kernel_virt_size;
 extern unsigned long __kernel_io_start;
+extern unsigned long __kernel_io_end;
 #define KERN_VIRT_START __kernel_virt_start
 #define KERN_VIRT_SIZE  __kernel_virt_size
 #define KERN_IO_START  __kernel_io_start
+#define KERN_IO_END __kernel_io_end
+
 extern struct page *vmemmap;
 extern unsigned long ioremap_bot;
 extern unsigned long pci_io_base;
@@ -296,8 +299,7 @@ extern unsigned long pci_io_base;
 
 #include <asm/barrier.h>
 /*
- * The second half of the kernel virtual space is used for IO mappings,
- * it's itself carved into the PIO region (ISA and PHB IO space) and
+ * IO space itself carved into the PIO region (ISA and PHB IO space) and
  * the ioremap space
  *
  *  ISA_IO_BASE = KERN_IO_START, 64K reserved area
@@ -310,7 +312,7 @@ extern unsigned long pci_io_base;
 #define  PHB_IO_BASE   (ISA_IO_END)
 #define  PHB_IO_END    (KERN_IO_START + FULL_IO_SIZE)
 #define IOREMAP_BASE   (PHB_IO_END)
-#define IOREMAP_END    (KERN_VIRT_START + KERN_VIRT_SIZE)
+#define IOREMAP_END    (KERN_IO_END)
 
 /* Advertise special mapping type for AGP */
 #define HAVE_PAGE_AGP
index 5ab134eeed20c9da92e431bf9ac512ea1ec8d729..6d760a083d62169baa1a5554b02b4555136a9d6d 100644 (file)
 #define RADIX_VMEMMAP_BASE             (RADIX_VMALLOC_END)
 
 #define RADIX_KERN_IO_START    (RADIX_KERN_VIRT_START + (RADIX_KERN_VIRT_SIZE >> 1))
+#define RADIX_KERN_IO_END       (RADIX_KERN_VIRT_START + RADIX_KERN_VIRT_SIZE)
 
 #ifndef __ASSEMBLY__
 #define RADIX_PTE_TABLE_SIZE   (sizeof(pte_t) << RADIX_PTE_INDEX_SIZE)
index 6a2d315495a3c68517ce9e1831ba6e21d3156d2f..f6ffe8545717f8f204d7337b01f2a8b9c0945966 100644 (file)
@@ -1013,6 +1013,7 @@ void __init hash__early_init_mmu(void)
        __vmalloc_start = H_VMALLOC_START;
        __vmalloc_end = H_VMALLOC_END;
        __kernel_io_start = H_KERN_IO_START;
+       __kernel_io_end = H_KERN_IO_END;
        vmemmap = (struct page *)H_VMEMMAP_BASE;
        ioremap_bot = IOREMAP_BASE;
 
index 45869fd698a0c26e5190a018309d3615f00574d7..4c1a9843d0f28f414d4aa7a4b92cc12a4872573d 100644 (file)
@@ -605,6 +605,7 @@ void __init radix__early_init_mmu(void)
        __vmalloc_start = RADIX_VMALLOC_START;
        __vmalloc_end = RADIX_VMALLOC_END;
        __kernel_io_start = RADIX_KERN_IO_START;
+       __kernel_io_end = RADIX_KERN_IO_END;
        vmemmap = (struct page *)RADIX_VMEMMAP_BASE;
        ioremap_bot = IOREMAP_BASE;
 
index fb1375c07e8c7aa7b55adc3945953c79d9cb2f99..7cea39bdf05f8629aa643bf9f369bc647d4adaad 100644 (file)
@@ -98,6 +98,8 @@ unsigned long __vmalloc_end;
 EXPORT_SYMBOL(__vmalloc_end);
 unsigned long __kernel_io_start;
 EXPORT_SYMBOL(__kernel_io_start);
+unsigned long __kernel_io_end;
+EXPORT_SYMBOL(__kernel_io_end);
 struct page *vmemmap;
 EXPORT_SYMBOL(vmemmap);
 unsigned long __pte_frag_nr;