s390/mm: define Real Memory Copy size and mask macros
authorAlexander Gordeev <agordeev@linux.ibm.com>
Fri, 4 Aug 2023 13:39:06 +0000 (15:39 +0200)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 16 Aug 2023 13:13:02 +0000 (15:13 +0200)
Make Real Memory Copy area size and mask explicit.
This does not bring any functional change and only
needed for clarity.

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
arch/s390/include/asm/maccess.h
arch/s390/mm/dump_pagetables.c
arch/s390/mm/maccess.c

index b058e2a575c1707bd62e870a060315aa6c4a96b5..d61428190cdd2c971690522594c299cec6adf017 100644 (file)
@@ -204,7 +204,7 @@ static unsigned long setup_kernel_memory_layout(void)
        /* force vmalloc and modules below kasan shadow */
        vmax = min(vmax, KASAN_SHADOW_START);
 #endif
-       __memcpy_real_area = round_down(vmax - PAGE_SIZE, PAGE_SIZE);
+       __memcpy_real_area = round_down(vmax - MEMCPY_REAL_SIZE, PAGE_SIZE);
        __abs_lowcore = round_down(__memcpy_real_area - ABS_LOWCORE_MAP_SIZE,
                                   sizeof(struct lowcore));
        MODULES_END = round_down(__abs_lowcore, _SEGMENT_SIZE);
index cfec3141fdbad3c323debaa6980b24f5fd5c1b6f..50225940d9719e027f88b7d193f421b0ba937f8d 100644 (file)
@@ -4,6 +4,9 @@
 
 #include <linux/types.h>
 
+#define MEMCPY_REAL_SIZE       PAGE_SIZE
+#define MEMCPY_REAL_MASK       PAGE_MASK
+
 struct iov_iter;
 
 extern unsigned long __memcpy_real_area;
index ba5f8026887814cf1b938cd40383af7537896226..afa5db750d9242cd623b559ab59eb5bafb28f669 100644 (file)
@@ -297,7 +297,7 @@ static int pt_dump_init(void)
        address_markers[ABS_LOWCORE_NR].start_address = __abs_lowcore;
        address_markers[ABS_LOWCORE_END_NR].start_address = __abs_lowcore + ABS_LOWCORE_MAP_SIZE;
        address_markers[MEMCPY_REAL_NR].start_address = __memcpy_real_area;
-       address_markers[MEMCPY_REAL_END_NR].start_address = __memcpy_real_area + PAGE_SIZE;
+       address_markers[MEMCPY_REAL_END_NR].start_address = __memcpy_real_area + MEMCPY_REAL_SIZE;
        address_markers[VMEMMAP_NR].start_address = (unsigned long) vmemmap;
        address_markers[VMEMMAP_END_NR].start_address = (unsigned long)vmemmap + vmemmap_size;
        address_markers[VMALLOC_NR].start_address = VMALLOC_START;
index cbe1df1e9c185dae64c869f24fe17e0279249ca2..c805b3e2592bbea8178586a84008ab92c49e5d7b 100644 (file)
@@ -86,11 +86,12 @@ size_t memcpy_real_iter(struct iov_iter *iter, unsigned long src, size_t count)
        void *chunk;
        pte_t pte;
 
+       BUILD_BUG_ON(MEMCPY_REAL_SIZE != PAGE_SIZE);
        while (count) {
-               phys = src & PAGE_MASK;
-               offset = src & ~PAGE_MASK;
+               phys = src & MEMCPY_REAL_MASK;
+               offset = src & ~MEMCPY_REAL_MASK;
                chunk = (void *)(__memcpy_real_area + offset);
-               len = min(count, PAGE_SIZE - offset);
+               len = min(count, MEMCPY_REAL_SIZE - offset);
                pte = mk_pte_phys(phys, PAGE_KERNEL_RO);
 
                mutex_lock(&memcpy_real_mutex);