linux/arch/s390/boot
Alexander Gordeev 2f0e8aae26 s390/mm: rework memcpy_real() to avoid DAT-off mode
Function memcpy_real() is an univeral data mover that does not
require DAT mode to be able reading from a physical address.
Its advantage is an ability to read from any address, even
those for which no kernel virtual mapping exists.

Although memcpy_real() is interrupt-safe, there are no handlers
that make use of this function. The compiler instrumentation
have to be disabled and separate no-DAT stack used to allow
execution of the function once DAT mode is disabled.

Rework memcpy_real() to overcome these shortcomings. As result,
data copying (which is primarily reading out a crashed system
memory by a user process) is executed on a regular stack with
enabled interrupts. Also, use of memcpy_real_buf swap buffer
becomes unnecessary and the swapping is eliminated.

The above is achieved by using a fixed virtual address range
that spans a single page and remaps that page repeatedly when
memcpy_real() is called for a particular physical address.

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>
2022-09-14 16:46:01 +02: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/boot: convert initial lowcore to C 2022-05-06 20:45:15 +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 s390/boot: get rid of startup archive 2022-05-06 20:45:14 +02:00
decompressor.h s390/boot: get rid of startup archive 2022-05-06 20:45:14 +02:00
ebcdic.c s390/decompressor: avoid reusing uncompressed image objects 2018-06-25 10:14:39 +02:00
head_kdump.S s390/decompressor: correct some asm symbols annotations 2020-11-20 19:19:11 +01:00
head.S s390/head: get rid of 31 bit leftovers 2022-05-18 13:31:07 +02:00
install.sh kbuild: factor out the common installation code into scripts/install.sh 2022-05-11 21:45:53 +09:00
ipl_data.c s390/boot: convert parmarea to C 2022-05-06 20:45:15 +02:00
ipl_parm.c s390/boot: convert parmarea to C 2022-05-06 20:45:15 +02:00
ipl_report.c s390/boot: introduce boot data 'initrd_data' 2021-07-27 09:39:15 +02: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/boot: get rid of startup archive 2022-05-06 20:45:14 +02:00
machine_kexec_reloc.c s390/kernel: build a relocatable kernel 2019-04-29 10:47:10 +02:00
Makefile s390/boot: convert initial lowcore to C 2022-05-06 20:45:15 +02:00
mem_detect.c s390/boot: get rid of startup archive 2022-05-06 20:45:14 +02: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: rename last_break to pgm_last_break 2021-10-26 15:21:28 +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/mm: rework memcpy_real() to avoid DAT-off mode 2022-09-14 16:46:01 +02:00
string.c kasan, x86, s390: update undef CONFIG_KASAN 2020-12-22 12:55:08 -08:00
uv.c s390 updates for 5.20 merge window 2022-08-06 17:05:21 -07:00
uv.h s390/boot: cleanup adjust_to_uv_max() function 2022-07-28 18:05:23 +02:00
version.c s390: enable detection of kernel version from bzImage 2019-07-23 10:43:50 +02:00
vmlinux.lds.S s390/boot: convert parmarea to C 2022-05-06 20:45:15 +02:00