diff options
author | Alexander Gordeev <agordeev@linux.ibm.com> | 2023-08-10 22:40:19 +0300 |
---|---|---|
committer | Alexander Gordeev <agordeev@linux.ibm.com> | 2024-04-17 14:38:00 +0300 |
commit | 7de0446f0b26589fa80e384d8edaa2c279583652 (patch) | |
tree | 14c8bfcee990544bf0f3d1a2884933dd9cfbb428 /arch | |
parent | 3bb11234b1d17236ba479f7d0eaa9bd12f2f2493 (diff) | |
download | linux-7de0446f0b26589fa80e384d8edaa2c279583652.tar.xz |
s390/boot: Make identity mapping base address explicit
This is a preparatory rework to allow uncoupling virtual
and physical addresses spaces.
Currently the identity mapping base address is implicit
and is always set to zero. Make it explicit by putting
into __identity_base persistent boot variable and use it
in proper context - which is the value of PAGE_OFFSET.
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/include/asm/page.h | 6 | ||||
-rw-r--r-- | arch/s390/kernel/setup.c | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h index e2137b6ec2ed..95403750d25a 100644 --- a/arch/s390/include/asm/page.h +++ b/arch/s390/include/asm/page.h @@ -181,6 +181,7 @@ int arch_make_page_accessible(struct page *page); struct vm_layout { unsigned long kaslr_offset; unsigned long kaslr_offset_phys; + unsigned long identity_base; unsigned long identity_size; }; @@ -188,6 +189,7 @@ extern struct vm_layout vm_layout; #define __kaslr_offset vm_layout.kaslr_offset #define __kaslr_offset_phys vm_layout.kaslr_offset_phys +#define __identity_base vm_layout.identity_base #define ident_map_size vm_layout.identity_size static inline unsigned long kaslr_offset(void) @@ -203,8 +205,8 @@ static inline int kaslr_enabled(void) return 0; } -#define __PAGE_OFFSET 0x0UL -#define PAGE_OFFSET 0x0UL +#define __PAGE_OFFSET __identity_base +#define PAGE_OFFSET __PAGE_OFFSET #define __pa_nodebug(x) ((unsigned long)(x)) diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index b9d70869bc36..0544830ffb90 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -149,6 +149,7 @@ unsigned long __bootdata_preserved(max_mappable); struct physmem_info __bootdata(physmem_info); struct vm_layout __bootdata_preserved(vm_layout); +EXPORT_SYMBOL_GPL(vm_layout); int __bootdata_preserved(__kaslr_enabled); unsigned int __bootdata_preserved(zlib_dfltcc_support); EXPORT_SYMBOL(zlib_dfltcc_support); |