linux/arch/s390/boot
Heiko Carstens a51324c430 s390/cmma: rework no-dat handling
Rework the way physical pages are set no-dat / dat:

The old way is:

- Rely on that all pages are initially marked "dat"
- Allocate page tables for the kernel mapping
- Enable dat
- Walk the whole kernel mapping and set PG_arch_1 bit in all struct pages
  that belong to pages of kernel page tables
- Walk all struct pages and test and clear the PG_arch_1 bit. If the bit is
  not set, set the page state to no-dat
- For all subsequent page table allocations, set the page state to dat
  (remove the no-dat state) on allocation time

Change this rather complex logic to a simpler approach:

- Set the whole physical memory (all pages) to "no-dat"
- Explicitly set those page table pages to "dat" which are part of the
  kernel image (e.g. swapper_pg_dir)
- For all subsequent page table allocations, set the page state to dat
  (remove the no-dat state) on allocation time

In result the code is simpler, and this also allows to get rid of one
odd usage of the PG_arch_1 bit.

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2023-11-05 22:34:58 +01:00
..
.gitignore s390/boot: get rid of startup archive 2022-05-06 20:45:14 +02:00
als.c s390/facilities: move stfl information from lowcore to global data 2021-06-07 17:06:58 +02:00
boot.h s390/kaslr: generalize and improve random base distribution 2023-04-13 17:36:27 +02:00
clz_ctz.c s390/boot: get rid of startup archive 2022-05-06 20:45:14 +02:00
cmdline.c s390: move ipl block and cmd line handling to early boot phase 2018-10-09 11:21:14 +02:00
ctype.c s390: move ipl block and cmd line handling to early boot phase 2018-10-09 11:21:14 +02:00
decompressor.c Merge branch 'fixes' into features 2023-02-06 15:13:45 +01:00
decompressor.h s390/boot: cleanup decompressor header files 2023-01-13 14:15:04 +01:00
ebcdic.c s390/decompressor: avoid reusing uncompressed image objects 2018-06-25 10:14:39 +02:00
head_kdump.S s390: consistently use .balign instead of .align 2023-06-28 13:57:09 +02:00
head.S s390: fix various typos 2023-07-03 11:19:42 +02:00
install.sh s390/boot: improve install.sh script 2023-04-13 17:36:28 +02:00
ipl_data.c s390/boot: convert parmarea to C 2022-05-06 20:45:15 +02:00
ipl_parm.c s390/cmma: move parsing of cmma kernel parameter to early boot code 2023-11-05 22:34:57 +01:00
ipl_report.c s390/boot: rework decompressor reserved tracking 2023-03-20 11:02:50 +01:00
ipl_vmparm.c s390: move ipl block and cmd line handling to early boot phase 2018-10-09 11:21:14 +02:00
kaslr.c s390/kaslr: generalize and improve random base distribution 2023-04-13 17:36:27 +02:00
machine_kexec_reloc.c s390/kernel: build a relocatable kernel 2019-04-29 10:47:10 +02:00
Makefile s390/boot: rename mem_detect to physmem_info 2023-03-20 11:02:50 +01:00
mem.S s390/decompressor: reuse lib/mem.S for mem functions 2018-06-25 10:14:39 +02:00
pgm_check_info.c s390/kaslr: provide kaslr_enabled() function 2023-04-13 17:36:25 +02:00
physmem_info.c s390/kaslr: generalize and improve random base distribution 2023-04-13 17:36:27 +02:00
sclp_early_core.c s390/boot: move sclp early buffer from fixed address in asm to C 2021-07-27 09:39:15 +02:00
startup.c s390/cmma: move parsing of cmma kernel parameter to early boot code 2023-11-05 22:34:57 +01:00
string.c kasan, x86, s390: update undef CONFIG_KASAN 2020-12-22 12:55:08 -08:00
uv.c s390/uv: Update query for secret-UVCs 2023-06-16 11:08:09 +02:00
uv.h s390/boot: cleanup adjust_to_uv_max() function 2022-07-28 18:05:23 +02:00
version.c kbuild: build init/built-in.a just once 2022-09-29 04:40:15 +09:00
vmem.c s390/cmma: rework no-dat handling 2023-11-05 22:34:58 +01:00
vmlinux.lds.S s390/boot: rework decompressor reserved tracking 2023-03-20 11:02:50 +01:00