tree: git://git.cmpxchg.org/linux-mmotm.git master head: 8276ddb3c638602509386f1a05f75326dbf5ce09 commit: 905a9b0bd6eba8d56ea426ff5ad32b19eecae750 [117/211] mm/hmm/mirror: helper to snapshot CPU page table config: blackfin-allmodconfig (attached as .config) compiler: bfin-uclinux-gcc (GCC) 6.2.0 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 905a9b0bd6eba8d56ea426ff5ad32b19eecae750 # save the attached .config to linux build tree make.cross ARCH=blackfin All error/warnings (new ones prefixed by >>): mm/hmm.c: In function 'hmm_vma_walk': >> mm/hmm.c:331:10: error: implicit declaration of function 'pgd_addr_end' [-Werror=implicit-function-declaration] next = pgd_addr_end(addr, end); ^~~~~~~~~~~~ >> mm/hmm.c:332:10: error: implicit declaration of function 'pgd_offset' [-Werror=implicit-function-declaration] pgdp = pgd_offset(vma->vm_mm, addr); ^~~~~~~~~~ >> mm/hmm.c:332:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion] pgdp = pgd_offset(vma->vm_mm, addr); ^ >> mm/hmm.c:345:10: error: implicit declaration of function 'pmd_addr_end' [-Werror=implicit-function-declaration] next = pmd_addr_end(addr, end); ^~~~~~~~~~~~ >> mm/hmm.c:347:9: error: implicit declaration of function 'pmd_read_atomic' [-Werror=implicit-function-declaration] pmd = pmd_read_atomic(pmdp); ^~~~~~~~~~~~~~~ >> mm/hmm.c:347:7: error: incompatible types when assigning to type 'pmd_t {aka struct <anonymous>}' from type 'int' pmd = pmd_read_atomic(pmdp); ^ >> mm/hmm.c:353:7: error: implicit declaration of function 'pmd_trans_huge' [-Werror=implicit-function-declaration] if (pmd_trans_huge(pmd) || pmd_devmap(pmd)) { ^~~~~~~~~~~~~~ mm/hmm.c:354:24: error: implicit declaration of function 'pmd_pfn' [-Werror=implicit-function-declaration] unsigned long pfn = pmd_pfn(pmd) + pte_index(addr); ^~~~~~~ >> mm/hmm.c:354:39: error: implicit declaration of function 'pte_index' [-Werror=implicit-function-declaration] unsigned long pfn = pmd_pfn(pmd) + pte_index(addr); ^~~~~~~~~ >> mm/hmm.c:357:8: error: implicit declaration of function 'pmd_protnone' [-Werror=implicit-function-declaration] if (pmd_protnone(pmd)) { ^~~~~~~~~~~~ mm/hmm.c:358:5: error: implicit declaration of function 'hmm_pfns_clear' [-Werror=implicit-function-declaration] hmm_pfns_clear(&pfns[i], addr, next); ^~~~~~~~~~~~~~ >> mm/hmm.c:361:13: error: implicit declaration of function 'pmd_write' [-Werror=implicit-function-declaration] flags |= pmd_write(*pmdp) ? HMM_PFN_WRITE : 0; ^~~~~~~~~ >> mm/hmm.c:368:10: error: implicit declaration of function 'pte_offset_map' [-Werror=implicit-function-declaration] ptep = pte_offset_map(pmdp, addr); ^~~~~~~~~~~~~~ mm/hmm.c:368:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion] ptep = pte_offset_map(pmdp, addr); ^ >> mm/hmm.c:375:8: error: implicit declaration of function 'pte_none' [-Werror=implicit-function-declaration] if (pte_none(pte)) { ^~~~~~~~ >> mm/hmm.c:381:9: error: implicit declaration of function 'pte_present' [-Werror=implicit-function-declaration] if (!pte_present(pte) && !non_swap_entry(entry)) { ^~~~~~~~~~~ >> mm/hmm.c:386:32: error: implicit declaration of function 'pte_pfn' [-Werror=implicit-function-declaration] pfns[i] = hmm_pfn_from_pfn(pte_pfn(pte))|flag; ^~~~~~~ >> mm/hmm.c:387:16: error: implicit declaration of function 'pte_write' [-Werror=implicit-function-declaration] pfns[i] |= pte_write(pte) ? HMM_PFN_WRITE : 0; ^~~~~~~~~ >> mm/hmm.c:406:3: error: implicit declaration of function 'pte_unmap' [-Werror=implicit-function-declaration] pte_unmap(ptep - 1); ^~~~~~~~~ cc1: some warnings being treated as errors vim +/pgd_addr_end +331 mm/hmm.c 325 /* 326 * We are accessing/faulting for a device from an unknown 327 * thread that might be foreign to the mm we are faulting 328 * against so do not call arch_vma_access_permitted() ! 329 */ 330 > 331 next = pgd_addr_end(addr, end); > 332 pgdp = pgd_offset(vma->vm_mm, addr); 333 if (pgd_none(*pgdp) || pgd_bad(*pgdp)) { 334 hmm_pfns_empty(&pfns[i], addr, next); 335 continue; 336 } 337 338 next = pud_addr_end(addr, end); 339 pudp = pud_offset(pgdp, addr); 340 if (pud_none(*pudp) || pud_bad(*pudp)) { 341 hmm_pfns_empty(&pfns[i], addr, next); 342 continue; 343 } 344 > 345 next = pmd_addr_end(addr, end); 346 pmdp = pmd_offset(pudp, addr); > 347 pmd = pmd_read_atomic(pmdp); 348 barrier(); 349 if (pmd_none(pmd) || pmd_bad(pmd)) { 350 hmm_pfns_empty(&pfns[i], addr, next); 351 continue; 352 } > 353 if (pmd_trans_huge(pmd) || pmd_devmap(pmd)) { > 354 unsigned long pfn = pmd_pfn(pmd) + pte_index(addr); 355 hmm_pfn_t flags = flag; 356 > 357 if (pmd_protnone(pmd)) { 358 hmm_pfns_clear(&pfns[i], addr, next); 359 continue; 360 } > 361 flags |= pmd_write(*pmdp) ? HMM_PFN_WRITE : 0; 362 flags |= pmd_devmap(pmd) ? HMM_PFN_DEVICE : 0; 363 for (; addr < next; addr += PAGE_SIZE, i++, pfn++) 364 pfns[i] = hmm_pfn_from_pfn(pfn) | flags; 365 continue; 366 } 367 > 368 ptep = pte_offset_map(pmdp, addr); 369 for (; addr < next; addr += PAGE_SIZE, i++, ptep++) { 370 swp_entry_t entry; 371 pte_t pte = *ptep; 372 373 pfns[i] = 0; 374 > 375 if (pte_none(pte)) { 376 pfns[i] = HMM_PFN_EMPTY; 377 continue; 378 } 379 380 entry = pte_to_swp_entry(pte); > 381 if (!pte_present(pte) && !non_swap_entry(entry)) { 382 continue; 383 } 384 385 if (pte_present(pte)) { > 386 pfns[i] = hmm_pfn_from_pfn(pte_pfn(pte))|flag; > 387 pfns[i] |= pte_write(pte) ? HMM_PFN_WRITE : 0; 388 continue; 389 } 390 391 /* 392 * This is a special swap entry, ignore migration, use 393 * device and report anything else as error. 394 */ 395 if (is_device_entry(entry)) { 396 pfns[i] = hmm_pfn_from_pfn(swp_offset(entry)); 397 if (is_write_device_entry(entry)) 398 pfns[i] |= HMM_PFN_WRITE; 399 pfns[i] |= HMM_PFN_DEVICE; 400 pfns[i] |= HMM_PFN_UNADDRESSABLE; 401 pfns[i] |= flag; 402 } else if (!is_migration_entry(entry)) { 403 pfns[i] = HMM_PFN_ERROR; 404 } 405 } > 406 pte_unmap(ptep - 1); 407 } 408 } 409 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip