Hi Nicholas, I love your patch! Yet something to improve: [auto build test ERROR on powerpc/next] [also build test ERROR on arm64/for-next/core v5.11-rc5 next-20210125] [cannot apply to hnaz-linux-mm/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/huge-vmalloc-mappings/20210126-143141 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: x86_64-randconfig-a002-20210126 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 925ae8c790c7e354f12ec14a6cac6aa49fc75b29) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/e43d3c665212ea34b790ab8d150bbde9d42e35b8 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Nicholas-Piggin/huge-vmalloc-mappings/20210126-143141 git checkout e43d3c665212ea34b790ab8d150bbde9d42e35b8 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): >> mm/debug_vm_pgtable.c:221:7: error: implicit declaration of function 'arch_ioremap_pmd_supported' [-Werror,-Wimplicit-function-declaration] if (!arch_ioremap_pmd_supported()) ^ mm/debug_vm_pgtable.c:221:7: note: did you mean 'arch_vmap_pmd_supported'? arch/x86/include/asm/vmalloc.h:10:6: note: 'arch_vmap_pmd_supported' declared here bool arch_vmap_pmd_supported(pgprot_t prot); ^ >> mm/debug_vm_pgtable.c:343:7: error: implicit declaration of function 'arch_ioremap_pud_supported' [-Werror,-Wimplicit-function-declaration] if (!arch_ioremap_pud_supported()) ^ mm/debug_vm_pgtable.c:343:7: note: did you mean 'arch_vmap_pud_supported'? arch/x86/include/asm/vmalloc.h:9:6: note: 'arch_vmap_pud_supported' declared here bool arch_vmap_pud_supported(pgprot_t prot); ^ 2 errors generated. vim +/arch_ioremap_pmd_supported +221 mm/debug_vm_pgtable.c a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 215 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 216 #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 217 static void __init pmd_huge_tests(pmd_t *pmdp, unsigned long pfn, pgprot_t prot) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 218 { a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 219 pmd_t pmd; a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 220 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 @221 if (!arch_ioremap_pmd_supported()) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 222 return; 6315df41afccf1 Anshuman Khandual 2020-08-06 223 6315df41afccf1 Anshuman Khandual 2020-08-06 224 pr_debug("Validating PMD huge\n"); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 225 /* a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 226 * X86 defined pmd_set_huge() verifies that the given a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 227 * PMD is not a populated non-leaf entry. a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 228 */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 229 WRITE_ONCE(*pmdp, __pmd(0)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 230 WARN_ON(!pmd_set_huge(pmdp, __pfn_to_phys(pfn), prot)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 231 WARN_ON(!pmd_clear_huge(pmdp)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 232 pmd = READ_ONCE(*pmdp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 233 WARN_ON(!pmd_none(pmd)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 234 } 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 235 #else /* CONFIG_HAVE_ARCH_HUGE_VMAP */ 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 236 static void __init pmd_huge_tests(pmd_t *pmdp, unsigned long pfn, pgprot_t prot) { } 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 237 #endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 238 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 239 static void __init pmd_savedwrite_tests(unsigned long pfn, pgprot_t prot) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 240 { a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 241 pmd_t pmd = pfn_pmd(pfn, prot); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 242 4200605b1f80e4 Aneesh Kumar K.V 2020-10-15 243 if (!IS_ENABLED(CONFIG_NUMA_BALANCING)) 4200605b1f80e4 Aneesh Kumar K.V 2020-10-15 244 return; 4200605b1f80e4 Aneesh Kumar K.V 2020-10-15 245 6315df41afccf1 Anshuman Khandual 2020-08-06 246 pr_debug("Validating PMD saved write\n"); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 247 WARN_ON(!pmd_savedwrite(pmd_mk_savedwrite(pmd_clear_savedwrite(pmd)))); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 248 WARN_ON(pmd_savedwrite(pmd_clear_savedwrite(pmd_mk_savedwrite(pmd)))); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 249 } a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 250 399145f9eb6c67 Anshuman Khandual 2020-06-04 251 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD 399145f9eb6c67 Anshuman Khandual 2020-06-04 252 static void __init pud_basic_tests(unsigned long pfn, pgprot_t prot) 399145f9eb6c67 Anshuman Khandual 2020-06-04 253 { 399145f9eb6c67 Anshuman Khandual 2020-06-04 254 pud_t pud = pfn_pud(pfn, prot); 399145f9eb6c67 Anshuman Khandual 2020-06-04 255 787d563b8642f3 Aneesh Kumar K.V 2020-06-10 256 if (!has_transparent_hugepage()) 787d563b8642f3 Aneesh Kumar K.V 2020-06-10 257 return; 787d563b8642f3 Aneesh Kumar K.V 2020-06-10 258 6315df41afccf1 Anshuman Khandual 2020-08-06 259 pr_debug("Validating PUD basic\n"); 399145f9eb6c67 Anshuman Khandual 2020-06-04 260 WARN_ON(!pud_same(pud, pud)); 399145f9eb6c67 Anshuman Khandual 2020-06-04 261 WARN_ON(!pud_young(pud_mkyoung(pud_mkold(pud)))); 399145f9eb6c67 Anshuman Khandual 2020-06-04 262 WARN_ON(!pud_write(pud_mkwrite(pud_wrprotect(pud)))); 399145f9eb6c67 Anshuman Khandual 2020-06-04 263 WARN_ON(pud_write(pud_wrprotect(pud_mkwrite(pud)))); 399145f9eb6c67 Anshuman Khandual 2020-06-04 264 WARN_ON(pud_young(pud_mkold(pud_mkyoung(pud)))); 399145f9eb6c67 Anshuman Khandual 2020-06-04 265 399145f9eb6c67 Anshuman Khandual 2020-06-04 266 if (mm_pmd_folded(mm)) 399145f9eb6c67 Anshuman Khandual 2020-06-04 267 return; 399145f9eb6c67 Anshuman Khandual 2020-06-04 268 399145f9eb6c67 Anshuman Khandual 2020-06-04 269 /* 399145f9eb6c67 Anshuman Khandual 2020-06-04 270 * A huge page does not point to next level page table 399145f9eb6c67 Anshuman Khandual 2020-06-04 271 * entry. Hence this must qualify as pud_bad(). 399145f9eb6c67 Anshuman Khandual 2020-06-04 272 */ 399145f9eb6c67 Anshuman Khandual 2020-06-04 273 WARN_ON(!pud_bad(pud_mkhuge(pud))); 399145f9eb6c67 Anshuman Khandual 2020-06-04 274 } a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 275 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 276 static void __init pud_advanced_tests(struct mm_struct *mm, a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 277 struct vm_area_struct *vma, pud_t *pudp, a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 278 unsigned long pfn, unsigned long vaddr, a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 279 pgprot_t prot) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 280 { a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 281 pud_t pud = pfn_pud(pfn, prot); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 282 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 283 if (!has_transparent_hugepage()) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 284 return; a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 285 6315df41afccf1 Anshuman Khandual 2020-08-06 286 pr_debug("Validating PUD advanced\n"); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 287 /* Align the address wrt HPAGE_PUD_SIZE */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 288 vaddr = (vaddr & HPAGE_PUD_MASK) + HPAGE_PUD_SIZE; a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 289 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 290 set_pud_at(mm, vaddr, pudp, pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 291 pudp_set_wrprotect(mm, vaddr, pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 292 pud = READ_ONCE(*pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 293 WARN_ON(pud_write(pud)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 294 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 295 #ifndef __PAGETABLE_PMD_FOLDED a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 296 pudp_huge_get_and_clear(mm, vaddr, pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 297 pud = READ_ONCE(*pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 298 WARN_ON(!pud_none(pud)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 299 #endif /* __PAGETABLE_PMD_FOLDED */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 300 pud = pfn_pud(pfn, prot); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 301 pud = pud_wrprotect(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 302 pud = pud_mkclean(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 303 set_pud_at(mm, vaddr, pudp, pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 304 pud = pud_mkwrite(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 305 pud = pud_mkdirty(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 306 pudp_set_access_flags(vma, vaddr, pudp, pud, 1); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 307 pud = READ_ONCE(*pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 308 WARN_ON(!(pud_write(pud) && pud_dirty(pud))); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 309 c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 310 #ifndef __PAGETABLE_PMD_FOLDED c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 311 pudp_huge_get_and_clear_full(mm, vaddr, pudp, 1); c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 312 pud = READ_ONCE(*pudp); c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 313 WARN_ON(!pud_none(pud)); c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 314 #endif /* __PAGETABLE_PMD_FOLDED */ c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 315 c3824e18d3f394 Aneesh Kumar K.V 2020-10-15 316 pud = pfn_pud(pfn, prot); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 317 pud = pud_mkyoung(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 318 set_pud_at(mm, vaddr, pudp, pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 319 pudp_test_and_clear_young(vma, vaddr, pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 320 pud = READ_ONCE(*pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 321 WARN_ON(pud_young(pud)); 13af0506303323 Aneesh Kumar K.V 2020-10-15 322 13af0506303323 Aneesh Kumar K.V 2020-10-15 323 pudp_huge_get_and_clear(mm, vaddr, pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 324 } a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 325 a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 326 static void __init pud_leaf_tests(unsigned long pfn, pgprot_t prot) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 327 { a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 328 pud_t pud = pfn_pud(pfn, prot); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 329 6315df41afccf1 Anshuman Khandual 2020-08-06 330 pr_debug("Validating PUD leaf\n"); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 331 /* a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 332 * PUD based THP is a leaf entry. a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 333 */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 334 pud = pud_mkhuge(pud); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 335 WARN_ON(!pud_leaf(pud)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 336 } a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 337 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 338 #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 339 static void __init pud_huge_tests(pud_t *pudp, unsigned long pfn, pgprot_t prot) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 340 { a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 341 pud_t pud; a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 342 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 @343 if (!arch_ioremap_pud_supported()) a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 344 return; 6315df41afccf1 Anshuman Khandual 2020-08-06 345 6315df41afccf1 Anshuman Khandual 2020-08-06 346 pr_debug("Validating PUD huge\n"); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 347 /* a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 348 * X86 defined pud_set_huge() verifies that the given a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 349 * PUD is not a populated non-leaf entry. a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 350 */ a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 351 WRITE_ONCE(*pudp, __pud(0)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 352 WARN_ON(!pud_set_huge(pudp, __pfn_to_phys(pfn), prot)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 353 WARN_ON(!pud_clear_huge(pudp)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 354 pud = READ_ONCE(*pudp); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 355 WARN_ON(!pud_none(pud)); a5c3b9ffb0f404 Anshuman Khandual 2020-08-06 356 } 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 357 #else /* !CONFIG_HAVE_ARCH_HUGE_VMAP */ 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 358 static void __init pud_huge_tests(pud_t *pudp, unsigned long pfn, pgprot_t prot) { } 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 359 #endif /* !CONFIG_HAVE_ARCH_HUGE_VMAP */ 85a144632dcc71 Aneesh Kumar K.V 2020-10-15 360 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip