mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-18 19:13:06 +00:00
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 | ||