mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-25 20:14:25 +08:00
a51324c430
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> |
||
---|---|---|
.. | ||
.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.S | ||
pgm_check_info.c | ||
physmem_info.c | ||
sclp_early_core.c | ||
startup.c | ||
string.c | ||
uv.c | ||
uv.h | ||
version.c | ||
vmem.c | ||
vmlinux.lds.S |