[radeon-alex:drm-next-5.2-wip 21/42] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:756:32: error: 'HMM_PFN_VALID' undeclared; did you mean '_PAGE_VALID'?
Kuehling, Felix
Felix.Kuehling at amd.com
Wed Apr 3 22:20:21 UTC 2019
[dropping the robot]
I think Philip fixed those issues on amd-staging-drm-next. Either some
fixes are missing on drm-next-5.2-wip, or they are there but should be
squashed to avoid hitting these errors on intermediate builds.
Regards,
Felix
On 2019-04-03 2:26 p.m., kbuild test robot wrote:
> tree: git://people.freedesktop.org/~agd5f/linux.git drm-next-5.2-wip
> head: 5666aea3ea494d4dd96df8f092cab32dbeeac321
> commit: 95db8d6001df8966e3370a66c9f358925fbcc890 [21/42] drm/amdgpu: replace get_user_pages with HMM mirror helpers
> config: mips-allyesconfig (attached as .config)
> compiler: mips-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 95db8d6001df8966e3370a66c9f358925fbcc890
> # save the attached .config to linux build tree
> GCC_VERSION=7.2.0 make.cross ARCH=mips
>
> Note: the radeon-alex/drm-next-5.2-wip HEAD 5666aea3ea494d4dd96df8f092cab32dbeeac321 builds fine.
> It only hurts bisectibility.
>
> All errors (new ones prefixed by >>):
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:713:19: error: field 'range' has incomplete type
> struct hmm_range range;
> ^~~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c: In function 'amdgpu_ttm_tt_get_user_pages':
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:738:7: error: dereferencing pointer to incomplete type 'struct hmm_range'
> range->vma = find_vma(mm, gtt->userptr);
> ^~
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:756:32: error: 'HMM_PFN_VALID' undeclared (first use in this function); did you mean '_PAGE_VALID'?
> range->pfns[0] = range->flags[HMM_PFN_VALID];
> ^~~~~~~~~~~~~
> _PAGE_VALID
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:756:32: note: each undeclared identifier is reported only once for each function it appears in
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:758:22: error: 'HMM_PFN_WRITE' undeclared (first use in this function); did you mean 'HMM_PFN_VALID'?
> 0 : range->flags[HMM_PFN_WRITE];
> ^~~~~~~~~~~~~
> HMM_PFN_VALID
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:763:6: error: implicit declaration of function 'hmm_vma_fault'; did you mean 'hmm_mm_init'? [-Werror=implicit-function-declaration]
> r = hmm_vma_fault(range, true);
> ^~~~~~~~~~~~~
> hmm_mm_init
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:770:14: error: implicit declaration of function 'hmm_pfn_to_page'; did you mean '__pfn_to_page'? [-Werror=implicit-function-declaration]
> pages[i] = hmm_pfn_to_page(range, range->pfns[i]);
> ^~~~~~~~~~~~~~~
> __pfn_to_page
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c: In function 'amdgpu_ttm_tt_get_user_pages_done':
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:798:7: error: implicit declaration of function 'hmm_vma_range_done'; did you mean 'drm_vma_node_size'? [-Werror=implicit-function-declaration]
> r = hmm_vma_range_done(>t->range);
> ^~~~~~~~~~~~~~~~~~
> drm_vma_node_size
> cc1: some warnings being treated as errors
>
> vim +756 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>
> 703
> 704 /*
> 705 * TTM backend functions.
> 706 */
> 707 struct amdgpu_ttm_tt {
> 708 struct ttm_dma_tt ttm;
> 709 u64 offset;
> 710 uint64_t userptr;
> 711 struct task_struct *usertask;
> 712 uint32_t userflags;
> > 713 struct hmm_range range;
> 714 };
> 715
> 716 /**
> 717 * amdgpu_ttm_tt_get_user_pages - get device accessible pages that back user
> 718 * memory and start HMM tracking CPU page table update
> 719 *
> 720 * Calling function must call amdgpu_ttm_tt_userptr_range_done() once and only
> 721 * once afterwards to stop HMM tracking
> 722 */
> 723 int amdgpu_ttm_tt_get_user_pages(struct ttm_tt *ttm, struct page **pages)
> 724 {
> 725 struct amdgpu_ttm_tt *gtt = (void *)ttm;
> 726 struct mm_struct *mm = gtt->usertask->mm;
> 727 unsigned long end = gtt->userptr + ttm->num_pages * PAGE_SIZE;
> 728 struct hmm_range *range = >t->range;
> 729 int r = 0, i;
> 730
> 731 if (!mm) /* Happens during process shutdown */
> 732 return -ESRCH;
> 733
> 734 amdgpu_hmm_init_range(range);
> 735
> 736 down_read(&mm->mmap_sem);
> 737
> 738 range->vma = find_vma(mm, gtt->userptr);
> 739 if (!range_in_vma(range->vma, gtt->userptr, end))
> 740 r = -EFAULT;
> 741 else if ((gtt->userflags & AMDGPU_GEM_USERPTR_ANONONLY) &&
> 742 range->vma->vm_file)
> 743 r = -EPERM;
> 744 if (r)
> 745 goto out;
> 746
> 747 range->pfns = kvmalloc_array(ttm->num_pages, sizeof(uint64_t),
> 748 GFP_KERNEL);
> 749 if (range->pfns == NULL) {
> 750 r = -ENOMEM;
> 751 goto out;
> 752 }
> 753 range->start = gtt->userptr;
> 754 range->end = end;
> 755
> > 756 range->pfns[0] = range->flags[HMM_PFN_VALID];
> 757 range->pfns[0] |= amdgpu_ttm_tt_is_readonly(ttm) ?
> 758 0 : range->flags[HMM_PFN_WRITE];
> 759 for (i = 1; i < ttm->num_pages; i++)
> 760 range->pfns[i] = range->pfns[0];
> 761
> 762 /* This may trigger page table update */
> 763 r = hmm_vma_fault(range, true);
> 764 if (r)
> 765 goto out_free_pfns;
> 766
> 767 up_read(&mm->mmap_sem);
> 768
> 769 for (i = 0; i < ttm->num_pages; i++)
> 770 pages[i] = hmm_pfn_to_page(range, range->pfns[i]);
> 771
> 772 return 0;
> 773
> 774 out_free_pfns:
> 775 kvfree(range->pfns);
> 776 range->pfns = NULL;
> 777 out:
> 778 up_read(&mm->mmap_sem);
> 779 return r;
> 780 }
> 781
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
More information about the dri-devel
mailing list