s390/boot: account Real Memory Copy and Lowcore areas
authorAlexander Gordeev <agordeev@linux.ibm.com>
Fri, 4 Aug 2023 13:24:28 +0000 (15:24 +0200)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 16 Aug 2023 13:13:02 +0000 (15:13 +0200)
Real Memory Copy and (absolute) Lowcore areas are
not accounted when virtual memory layout is set up.

Fixes: 4df29d2b9024 ("s390/smp: rework absolute lowcore access")
Fixes: 2f0e8aae26a2 ("s390/mm: rework memcpy_real() to avoid DAT-off mode")
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/boot/startup.c

index d61428190cdd2c971690522594c299cec6adf017..a81f925630375923e9ab20100cc59ceb85eac761 100644 (file)
@@ -185,7 +185,8 @@ static unsigned long setup_kernel_memory_layout(void)
        vmemmap_size = SECTION_ALIGN_UP(pages) * sizeof(struct page);
 
        /* choose kernel address space layout: 4 or 3 levels. */
-       vsize = round_up(ident_map_size, _REGION3_SIZE) + vmemmap_size + MODULES_LEN;
+       vsize = round_up(ident_map_size, _REGION3_SIZE) + vmemmap_size +
+               MODULES_LEN + MEMCPY_REAL_SIZE + ABS_LOWCORE_MAP_SIZE;
        vsize = size_add(vsize, vmalloc_size);
        if (IS_ENABLED(CONFIG_KASAN) || (vsize > _REGION2_SIZE)) {
                asce_limit = _REGION1_SIZE;