]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/mm: Create virtual memory layout structure
authorAlexander Gordeev <agordeev@linux.ibm.com>
Sat, 2 Dec 2023 09:57:15 +0000 (10:57 +0100)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Wed, 17 Apr 2024 11:38:00 +0000 (13:38 +0200)
This is a preparatory rework to allow uncoupling virtual
and physical addresses spaces.

Put virtual memory layout information into a structure
to improve code generation when accessing the structure
members, which are currently only ident_map_size and
__kaslr_offset.

Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/boot/startup.c
arch/s390/include/asm/page.h
arch/s390/kernel/setup.c

index ebd8d8dc3bea602385a3da9a6936187c27d30d26..8afb232d7c96f35008891d740c62068d8950e024 100644 (file)
@@ -19,7 +19,7 @@
 #include "boot.h"
 #include "uv.h"
 
-unsigned long __bootdata_preserved(__kaslr_offset);
+struct vm_layout __bootdata_preserved(vm_layout);
 unsigned long __bootdata_preserved(__abs_lowcore);
 unsigned long __bootdata_preserved(__memcpy_real_area);
 pte_t *__bootdata_preserved(memcpy_real_ptep);
@@ -30,7 +30,6 @@ unsigned long __bootdata_preserved(vmemmap_size);
 unsigned long __bootdata_preserved(MODULES_VADDR);
 unsigned long __bootdata_preserved(MODULES_END);
 unsigned long __bootdata_preserved(max_mappable);
-unsigned long __bootdata(ident_map_size);
 
 u64 __bootdata_preserved(stfle_fac_list[16]);
 u64 __bootdata_preserved(alt_stfle_fac_list[16]);
index 602e8056b7cc945db8967f3ccd2636feacb00864..f13a4527bf2d01f05cfe9d5e355057fc9684276c 100644 (file)
@@ -178,7 +178,16 @@ int arch_make_page_accessible(struct page *page);
 #define HAVE_ARCH_MAKE_PAGE_ACCESSIBLE
 #endif
 
-extern unsigned long __kaslr_offset;
+struct vm_layout {
+       unsigned long kaslr_offset;
+       unsigned long identity_size;
+};
+
+extern struct vm_layout vm_layout;
+
+#define __kaslr_offset         vm_layout.kaslr_offset
+#define ident_map_size         vm_layout.identity_size
+
 static inline unsigned long kaslr_offset(void)
 {
        return __kaslr_offset;
index 24ed33f044ec39720b11f83a5a925303d8c983a2..b9d70869bc3683da39f24fff7de80f752a5603ac 100644 (file)
@@ -146,10 +146,9 @@ static u32 __amode31_ref *__ctl_linkage_stack = __ctl_linkage_stack_amode31;
 static u32 __amode31_ref *__ctl_duct = __ctl_duct_amode31;
 
 unsigned long __bootdata_preserved(max_mappable);
-unsigned long __bootdata(ident_map_size);
 struct physmem_info __bootdata(physmem_info);
 
-unsigned long __bootdata_preserved(__kaslr_offset);
+struct vm_layout __bootdata_preserved(vm_layout);
 int __bootdata_preserved(__kaslr_enabled);
 unsigned int __bootdata_preserved(zlib_dfltcc_support);
 EXPORT_SYMBOL(zlib_dfltcc_support);