s390/setup: use physical pointers for memblock_reserve()
authorAlexander Gordeev <agordeev@linux.ibm.com>
Thu, 21 Jan 2021 12:06:02 +0000 (13:06 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Jul 2022 14:34:56 +0000 (16:34 +0200)
[ Upstream commit 04f11ed7d8e018e1f01ebda5814ddfeb3a1e6ae1 ]

memblock_reserve() function accepts physcal address of a memory
block to be reserved, but provided with virtual memory pointers.

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/setup.c

index e38de9e..2ebde34 100644 (file)
@@ -797,13 +797,10 @@ static void __init check_initrd(void)
  */
 static void __init reserve_kernel(void)
 {
-       unsigned long start_pfn = PFN_UP(__pa(_end));
-
        memblock_reserve(0, STARTUP_NORMAL_OFFSET);
-       memblock_reserve((unsigned long)sclp_early_sccb, EXT_SCCB_READ_SCP);
        memblock_reserve(__amode31_base, __eamode31 - __samode31);
-       memblock_reserve((unsigned long)_stext, PFN_PHYS(start_pfn)
-                        - (unsigned long)_stext);
+       memblock_reserve(__pa(sclp_early_sccb), EXT_SCCB_READ_SCP);
+       memblock_reserve(__pa(_stext), _end - _stext);
 }
 
 static void __init setup_memory(void)