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
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel