mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 16:41:39 +00:00
2f0e8aae26
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> |
||
---|---|---|
.. | ||
.gitignore | ||
als.c | ||
boot.h | ||
clz_ctz.c | ||
cmdline.c | ||
ctype.c | ||
decompressor.c | ||
decompressor.h | ||
ebcdic.c | ||
head_kdump.S | ||
head.S | ||
install.sh | ||
ipl_data.c | ||
ipl_parm.c | ||
ipl_report.c | ||
ipl_vmparm.c | ||
kaslr.c | ||
machine_kexec_reloc.c | ||
Makefile | ||
mem_detect.c | ||
mem.S | ||
pgm_check_info.c | ||
sclp_early_core.c | ||
startup.c | ||
string.c | ||
uv.c | ||
uv.h | ||
version.c | ||
vmlinux.lds.S |