[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'?
kbuild test robot
lkp at intel.com
Wed Apr 3 18:26:28 UTC 2019
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 59248 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190404/fcfcde3b/attachment-0001.gz>
More information about the dri-devel
mailing list