We need to #include <linux/pagemap.h>. On 2018-05-15 09:44 AM, kbuild test robot wrote: > tree: git://people.freedesktop.org/~gabbayo/linux amdkfd-next > head: 8feaccf71dd61f2201493068055e0d1d699014df > commit: 5ae0283e831a94c714fce61063e4724baf364ef3 [6/28] drm/amdgpu: Add userptr support for KFD > config: sparc64-allmodconfig (attached as .config) > compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > git checkout 5ae0283e831a94c714fce61063e4724baf364ef3 > # save the attached .config to linux build tree > make.cross ARCH=sparc64 > > All errors (new ones prefixed by >>): > > drivers/gpu//drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c: In function 'init_user_pages': >>> drivers/gpu//drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:632:3: error: implicit declaration of function 'release_pages'; did you mean 'release_task'? [-Werror=implicit-function-declaration] > release_pages(mem->user_pages, bo->tbo.ttm->num_pages); > ^~~~~~~~~~~~~ > release_task > cc1: some warnings being treated as errors > > vim +632 drivers/gpu//drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > > 561 > 562 /* Initializes user pages. It registers the MMU notifier and validates > 563 * the userptr BO in the GTT domain. > 564 * > 565 * The BO must already be on the userptr_valid_list. Otherwise an > 566 * eviction and restore may happen that leaves the new BO unmapped > 567 * with the user mode queues running. > 568 * > 569 * Takes the process_info->lock to protect against concurrent restore > 570 * workers. > 571 * > 572 * Returns 0 for success, negative errno for errors. > 573 */ > 574 static int init_user_pages(struct kgd_mem *mem, struct mm_struct *mm, > 575 uint64_t user_addr) > 576 { > 577 struct amdkfd_process_info *process_info = mem->process_info; > 578 struct amdgpu_bo *bo = mem->bo; > 579 struct ttm_operation_ctx ctx = { true, false }; > 580 int ret = 0; > 581 > 582 mutex_lock(&process_info->lock); > 583 > 584 ret = amdgpu_ttm_tt_set_userptr(bo->tbo.ttm, user_addr, 0); > 585 if (ret) { > 586 pr_err("%s: Failed to set userptr: %d\n", __func__, ret); > 587 goto out; > 588 } > 589 > 590 ret = amdgpu_mn_register(bo, user_addr); > 591 if (ret) { > 592 pr_err("%s: Failed to register MMU notifier: %d\n", > 593 __func__, ret); > 594 goto out; > 595 } > 596 > 597 /* If no restore worker is running concurrently, user_pages > 598 * should not be allocated > 599 */ > 600 WARN(mem->user_pages, "Leaking user_pages array"); > 601 > 602 mem->user_pages = kvmalloc_array(bo->tbo.ttm->num_pages, > 603 sizeof(struct page *), > 604 GFP_KERNEL | __GFP_ZERO); > 605 if (!mem->user_pages) { > 606 pr_err("%s: Failed to allocate pages array\n", __func__); > 607 ret = -ENOMEM; > 608 goto unregister_out; > 609 } > 610 > 611 ret = amdgpu_ttm_tt_get_user_pages(bo->tbo.ttm, mem->user_pages); > 612 if (ret) { > 613 pr_err("%s: Failed to get user pages: %d\n", __func__, ret); > 614 goto free_out; > 615 } > 616 > 617 amdgpu_ttm_tt_set_user_pages(bo->tbo.ttm, mem->user_pages); > 618 > 619 ret = amdgpu_bo_reserve(bo, true); > 620 if (ret) { > 621 pr_err("%s: Failed to reserve BO\n", __func__); > 622 goto release_out; > 623 } > 624 amdgpu_ttm_placement_from_domain(bo, mem->domain); > 625 ret = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); > 626 if (ret) > 627 pr_err("%s: failed to validate BO\n", __func__); > 628 amdgpu_bo_unreserve(bo); > 629 > 630 release_out: > 631 if (ret) > > 632 release_pages(mem->user_pages, bo->tbo.ttm->num_pages); > 633 free_out: > 634 kvfree(mem->user_pages); > 635 mem->user_pages = NULL; > 636 unregister_out: > 637 if (ret) > 638 amdgpu_mn_unregister(bo); > 639 out: > 640 mutex_unlock(&process_info->lock); > 641 return ret; > 642 } > 643 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel