[radeon-alex:drm-next-5.2-wip 21/42] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:798:7: error: implicit declaration of function 'hmm_vma_range_done'; did you mean '__range_ok'?

kbuild test robot lkp at intel.com
Wed Apr 3 18:26:26 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: s390-allyesconfig (attached as .config)
compiler: s390x-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=s390 

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 'DP_SU_VALID'?
     range->pfns[0] = range->flags[HMM_PFN_VALID];
                                   ^~~~~~~~~~~~~
                                   DP_SU_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 '__range_ok'? [-Werror=implicit-function-declaration]
      r = hmm_vma_range_done(&gtt->range);
          ^~~~~~~~~~~~~~~~~~
          __range_ok
   cc1: some warnings being treated as errors

vim +798 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

   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 = &gtt->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	
   782	/**
   783	 * amdgpu_ttm_tt_userptr_range_done - stop HMM track the CPU page table change
   784	 * Check if the pages backing this ttm range have been invalidated
   785	 *
   786	 * Returns: true if pages are still valid
   787	 */
   788	bool amdgpu_ttm_tt_get_user_pages_done(struct ttm_tt *ttm)
   789	{
   790		struct amdgpu_ttm_tt *gtt = (void *)ttm;
   791		bool r = false;
   792	
   793		if (!gtt || !gtt->userptr)
   794			return false;
   795	
   796		WARN_ONCE(!gtt->range.pfns, "No user pages to check\n");
   797		if (gtt->range.pfns) {
 > 798			r = hmm_vma_range_done(&gtt->range);
   799			kvfree(gtt->range.pfns);
   800			gtt->range.pfns = NULL;
   801		}
   802	
   803		return r;
   804	}
   805	

---
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: 53474 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190404/82f86476/attachment-0001.gz>


More information about the dri-devel mailing list