OpenCloudOS-Kernel/arch/arm64/mm
Will Deacon f992b4dfd5 arm64: kpti: Add ->enable callback to remap swapper using nG mappings
Defaulting to global mappings for kernel space is generally good for
performance and appears to be necessary for Cavium ThunderX. If we
subsequently decide that we need to enable kpti, then we need to rewrite
our existing page table entries to be non-global. This is fiddly, and
made worse by the possible use of contiguous mappings, which require
a strict break-before-make sequence.

Since the enable callback runs on each online CPU from stop_machine
context, we can have all CPUs enter the idmap, where secondaries can
wait for the primary CPU to rewrite swapper with its MMU off. It's all
fairly horrible, but at least it only runs once.

Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2018-02-06 22:53:18 +00:00
..
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cache.S arm64: kpti: Fix the interaction between ASID switching and software PAN 2018-01-16 17:37:48 +00:00
context.c arm64: Move BP hardening to check_and_switch_context 2018-01-23 15:40:29 +00:00
copypage.c arm64: Defer dcache flush in __cpu_copy_user_page 2015-12-17 11:07:13 +00:00
dma-mapping.c dma mapping : export caller to vmallocinfo 2017-10-04 13:43:00 +01:00
dump.c arm64: dump: Add checking for writable and exectuable pages 2016-11-07 18:15:04 +00:00
extable.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fault.c arm64: Add skeleton to harden the branch predictor against aliasing attacks 2018-01-08 18:45:25 +00:00
flush.c arm64: fix pmem interface definition 2017-08-10 18:13:59 +01:00
hugetlbpage.c arm64: hugetlb: Cleanup setup_hugepagesz 2017-08-22 17:47:12 +01:00
init.c arm64: mm: ignore memory above supported physical address size 2018-01-19 13:09:40 +00:00
ioremap.c arm64: use is_vmalloc_addr 2017-02-09 13:47:56 +00:00
kasan_init.c arm64/mm/kasan: don't use vmemmap_populate() to initialize shadow 2017-11-15 18:21:05 -08:00
mmap.c arm64/mmap: properly account for stack randomization in mmap_base 2017-07-12 16:26:03 -07:00
mmu.c arm64: mm: Permit transitioning from Global to Non-Global without BBM 2018-02-06 22:53:16 +00:00
numa.c arm64/numa: Drop duplicate message 2017-07-20 17:03:53 +01:00
pageattr.c arm64: use set_memory.h header 2017-05-08 17:15:13 -07:00
pgd.c arm64: handle 52-bit addresses in TTBR 2017-12-22 17:35:21 +00:00
physaddr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
proc.S arm64: kpti: Add ->enable callback to remap swapper using nG mappings 2018-02-06 22:53:18 +00:00
ptdump_debugfs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00