On Sat, May 27, 2017 at 12:10 AM, Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> wrote: > On Thu, May 25, 2017 at 11:33:33PM +0300, Kirill A. Shutemov wrote: >> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig >> index 0bf81e837cbf..c795207d8a3c 100644 >> --- a/arch/x86/Kconfig >> +++ b/arch/x86/Kconfig >> @@ -100,7 +100,7 @@ config X86 >> select HAVE_ARCH_AUDITSYSCALL >> select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE >> select HAVE_ARCH_JUMP_LABEL >> - select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP >> + select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP && !X86_5LEVEL >> select HAVE_ARCH_KGDB >> select HAVE_ARCH_KMEMCHECK >> select HAVE_ARCH_MMAP_RND_BITS if MMU > > Looks like KASAN will be a problem for boot-time paging mode switching. > It wants to know CONFIG_KASAN_SHADOW_OFFSET at compile-time to pass to > gcc -fasan-shadow-offset=. But this value varies between paging modes... > > I don't see how to solve it. Folks, any ideas? +kasan-dev I wonder if we can use the same offset for both modes. If we use 0xFFDFFC0000000000 as start of shadow for 5 levels, then the same offset that we use for 4 levels (0xdffffc0000000000) will also work for 5 levels. Namely, ending of 5 level shadow will overlap with 4 level mapping (both end at 0xfffffbffffffffff), but 5 level mapping extends towards lower addresses. The current 5 level start of shadow is actually close -- 0xffd8000000000000 and it seems that the required space after it is unused at the moment (at least looking at mm.txt). So just try to move it to 0xFFDFFC0000000000?