|
@@ -34,13 +34,13 @@
|
|
|
/*
|
|
|
* VMALLOC and SPARSEMEM_VMEMMAP ranges.
|
|
|
*
|
|
|
- * VMEMAP_SIZE: allows the whole VA space to be covered by a struct page array
|
|
|
+ * VMEMAP_SIZE: allows the whole linear region to be covered by a struct page array
|
|
|
* (rounded up to PUD_SIZE).
|
|
|
* VMALLOC_START: beginning of the kernel VA space
|
|
|
* VMALLOC_END: extends to the available space below vmmemmap, PCI I/O space,
|
|
|
* fixed mappings and modules
|
|
|
*/
|
|
|
-#define VMEMMAP_SIZE ALIGN((1UL << (VA_BITS - PAGE_SHIFT)) * sizeof(struct page), PUD_SIZE)
|
|
|
+#define VMEMMAP_SIZE ALIGN((1UL << (VA_BITS - PAGE_SHIFT - 1)) * sizeof(struct page), PUD_SIZE)
|
|
|
|
|
|
#ifndef CONFIG_KASAN
|
|
|
#define VMALLOC_START (VA_START)
|
|
@@ -51,7 +51,8 @@
|
|
|
|
|
|
#define VMALLOC_END (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K)
|
|
|
|
|
|
-#define vmemmap ((struct page *)(VMALLOC_END + SZ_64K))
|
|
|
+#define VMEMMAP_START (VMALLOC_END + SZ_64K)
|
|
|
+#define vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT))
|
|
|
|
|
|
#define FIRST_USER_ADDRESS 0UL
|
|
|
|