This patch series implements KASAN on 64-bit POWER with radix MMU, such as POWER9 or POWER10. Daniel Axtens posted previous versions of these patches, but is no longer working on KASAN, and I have been asked to get them ready for inclusion.
Because of various technical difficulties, mostly around the need to allow for code that runs in real mode, we only support "outline" mode (as opposed to "inline" mode), where the compiler adds a call to a checking procedure before every store to memory. This series has known deficiencies, specifically that the kernel will crash on boot on a HPT system, and that out-of-bounds accesses to module global data are not caught (which leads to one of the KASAN tests failing). v2: Split the large patch 3/3 of the previous series into three patches and addressed review comments; put the generic documentation changes in a separate patch at the end of the series; removed the RFC tag. Comments welcome. Paul. Documentation/dev-tools/kasan.rst | 7 +- Documentation/powerpc/kasan.txt | 58 ++++++++++++ arch/powerpc/Kconfig | 5 +- arch/powerpc/Kconfig.debug | 3 +- arch/powerpc/include/asm/book3s/64/hash.h | 4 + arch/powerpc/include/asm/book3s/64/pgtable.h | 3 + arch/powerpc/include/asm/book3s/64/radix.h | 12 ++- arch/powerpc/include/asm/interrupt.h | 52 ++++++++--- arch/powerpc/include/asm/kasan.h | 22 +++++ arch/powerpc/kernel/Makefile | 11 +++ arch/powerpc/kernel/smp.c | 22 ++--- arch/powerpc/kernel/traps.c | 6 +- arch/powerpc/kexec/Makefile | 2 + arch/powerpc/kvm/Makefile | 5 + arch/powerpc/lib/Makefile | 3 + arch/powerpc/mm/book3s64/Makefile | 9 ++ arch/powerpc/mm/kasan/Makefile | 3 +- .../mm/kasan/{kasan_init_32.c => init_32.c} | 0 arch/powerpc/mm/kasan/init_book3s_64.c | 103 +++++++++++++++++++++ arch/powerpc/mm/ptdump/ptdump.c | 3 +- arch/powerpc/platforms/Kconfig.cputype | 1 + arch/powerpc/platforms/powernv/Makefile | 8 ++ arch/powerpc/platforms/powernv/smp.c | 2 +- arch/powerpc/platforms/pseries/Makefile | 6 ++ arch/powerpc/sysdev/xics/xics-common.c | 4 +- arch/powerpc/sysdev/xive/common.c | 4 +- 26 files changed, 320 insertions(+), 38 deletions(-)