Hi Sergey, Thank you for the patch! Yet something to improve: [auto build test ERROR on net-next/master] [also build test ERROR on net/master linus/master v5.5-rc5 next-20200109] [cannot apply to xen-tip/linux-next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Sergey-Dyasli/basic-KASAN-support-for-Xen-PV-domains/20200110-042623 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 4a4a52d49d11f5c4a0df8b9806c8c5563801f753 config: arm64-randconfig-a001-20200109 (attached as .config) compiler: aarch64-linux-gcc (GCC) 7.5.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.5.0 make.cross ARCH=arm64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): In file included from arch/arm64/include/asm/kasan.h:9:0, from arch/arm64/include/asm/processor.h:34, from include/asm-generic/qrwlock.h:14, from ./arch/arm64/include/generated/asm/qrwlock.h:1, from arch/arm64/include/asm/spinlock.h:8, from include/linux/spinlock.h:89, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from include/linux/mm.h:10, from include/linux/memblock.h:13, from mm/kasan/init.c:14: mm/kasan/init.c: In function 'set_pmd_early_shadow': >> mm/kasan/init.c:90:43: error: '_PAGE_TABLE' undeclared (first use in this function); did you mean 'NR_PAGETABLE'? set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^ arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro '__pgd' #define __pgd(x) ((pgd_t) { (x) } ) ^ >> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro '__pud' #define __pmd(x) ((pmd_t) { __pud(x) } ) ^~~~~ >> mm/kasan/init.c:90:16: note: in expansion of macro '__pmd' set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^~~~~ mm/kasan/init.c:90:43: note: each undeclared identifier is reported only once for each function it appears in set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^ arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro '__pgd' #define __pgd(x) ((pgd_t) { (x) } ) ^ >> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro '__pud' #define __pmd(x) ((pmd_t) { __pud(x) } ) ^~~~~ >> mm/kasan/init.c:90:16: note: in expansion of macro '__pmd' set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^~~~~ -- In file included from arch/arm64/include/asm/kasan.h:9:0, from arch/arm64/include/asm/processor.h:34, from include/asm-generic/qrwlock.h:14, from ./arch/arm64/include/generated/asm/qrwlock.h:1, from arch/arm64/include/asm/spinlock.h:8, from include/linux/spinlock.h:89, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from include/linux/mm.h:10, from include/linux/memblock.h:13, from mm//kasan/init.c:14: mm//kasan/init.c: In function 'set_pmd_early_shadow': mm//kasan/init.c:90:43: error: '_PAGE_TABLE' undeclared (first use in this function); did you mean 'NR_PAGETABLE'? set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^ arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro '__pgd' #define __pgd(x) ((pgd_t) { (x) } ) ^ >> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro '__pud' #define __pmd(x) ((pmd_t) { __pud(x) } ) ^~~~~ mm//kasan/init.c:90:16: note: in expansion of macro '__pmd' set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^~~~~ mm//kasan/init.c:90:43: note: each undeclared identifier is reported only once for each function it appears in set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^ arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro '__pgd' #define __pgd(x) ((pgd_t) { (x) } ) ^ >> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro '__pud' #define __pmd(x) ((pmd_t) { __pud(x) } ) ^~~~~ mm//kasan/init.c:90:16: note: in expansion of macro '__pmd' set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); ^~~~~ vim +90 mm/kasan/init.c > 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 22 #include 23 #include 24 25 #include "kasan.h" 26 27 /* 28 * This page serves two purposes: 29 * - It used as early shadow memory. The entire shadow region populated 30 * with this page, before we will be able to setup normal shadow memory. 31 * - Latter it reused it as zero shadow to cover large ranges of memory 32 * that allowed to access, but not handled by kasan (vmalloc/vmemmap ...). 33 */ 34 unsigned char kasan_early_shadow_page[PAGE_SIZE] __page_aligned_bss; 35 36 #if CONFIG_PGTABLE_LEVELS > 4 37 p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D] __page_aligned_bss; 38 static inline bool kasan_p4d_table(pgd_t pgd) 39 { 40 return pgd_page(pgd) == virt_to_page(lm_alias(kasan_early_shadow_p4d)); 41 } 42 #else 43 static inline bool kasan_p4d_table(pgd_t pgd) 44 { 45 return false; 46 } 47 #endif 48 #if CONFIG_PGTABLE_LEVELS > 3 49 pud_t kasan_early_shadow_pud[PTRS_PER_PUD] __page_aligned_bss; 50 static inline bool kasan_pud_table(p4d_t p4d) 51 { 52 return p4d_page(p4d) == virt_to_page(lm_alias(kasan_early_shadow_pud)); 53 } 54 #else 55 static inline bool kasan_pud_table(p4d_t p4d) 56 { 57 return false; 58 } 59 #endif 60 #if CONFIG_PGTABLE_LEVELS > 2 61 pmd_t kasan_early_shadow_pmd[PTRS_PER_PMD] __page_aligned_bss; 62 static inline bool kasan_pmd_table(pud_t pud) 63 { 64 return pud_page(pud) == virt_to_page(lm_alias(kasan_early_shadow_pmd)); 65 } 66 #else 67 static inline bool kasan_pmd_table(pud_t pud) 68 { 69 return false; 70 } 71 #endif 72 pte_t kasan_early_shadow_pte[PTRS_PER_PTE] __page_aligned_bss; 73 74 static inline bool kasan_pte_table(pmd_t pmd) 75 { 76 return pmd_page(pmd) == virt_to_page(lm_alias(kasan_early_shadow_pte)); 77 } 78 79 static inline bool kasan_early_shadow_page_entry(pte_t pte) 80 { 81 return pte_page(pte) == virt_to_page(lm_alias(kasan_early_shadow_page)); 82 } 83 84 static inline void set_pmd_early_shadow(pmd_t *pmd) 85 { 86 static bool pmd_populated = false; 87 pte_t *early_shadow = lm_alias(kasan_early_shadow_pte); 88 89 if (likely(pmd_populated)) { > 90 set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE)); 91 } else { 92 pmd_populate_kernel(&init_mm, pmd, early_shadow); 93 pmd_populated = true; 94 } 95 } 96 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation