[radeon-alex:amd-mainline-dkms-5.0 3711/3724] drivers/gpu//drm/ttm/ttm_bo_vm.c:137:44: error: 'struct vm_fault' has no member named 'virtual_address'

kbuild test robot lkp at intel.com
Fri Sep 20 08:39:30 UTC 2019


Hi Flora,

FYI, the error/warning still remains.

tree:   git://people.freedesktop.org/~agd5f/linux.git amd-mainline-dkms-5.0
head:   a51a5ad4b8daf0dd0a437d51a19c2baa98953675
commit: 5165cd1453625e59650a1ed9b0f269b41529e421 [3711/3724] Revert "Revert "drm/amd/autoconf: Test whether vm_fault->{address/vma} is available""
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
        git checkout 5165cd1453625e59650a1ed9b0f269b41529e421
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

                    from <command-line>:0:
   include/linux/sched/mm.h:234:20: note: previous definition of 'memalloc_nofs_restore' was here
    static inline void memalloc_nofs_restore(unsigned int flags)
                       ^~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:61:21: error: redefinition of 'kvmalloc'
    static inline void *kvmalloc(size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from include/linux/scatterlist.h:8:0,
                    from include/linux/dma-mapping.h:11,
                    from include/drm/drmP.h:37,
                    from include/kcl/kcl_drm.h:6,
                    from drivers/gpu//drm/ttm/backport/backport.h:6,
                    from <command-line>:0:
   include/linux/mm.h:602:21: note: previous definition of 'kvmalloc' was here
    static inline void *kvmalloc(size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:71:21: error: redefinition of 'kvzalloc'
    static inline void *kvzalloc(size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from include/linux/scatterlist.h:8:0,
                    from include/linux/dma-mapping.h:11,
                    from include/drm/drmP.h:37,
                    from include/kcl/kcl_drm.h:6,
                    from drivers/gpu//drm/ttm/backport/backport.h:6,
                    from <command-line>:0:
   include/linux/mm.h:610:21: note: previous definition of 'kvzalloc' was here
    static inline void *kvzalloc(size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:81:20: error: static declaration of 'kvfree' follows non-static declaration
    static inline void kvfree(const void *addr)
                       ^~~~~~
   In file included from include/linux/scatterlist.h:8:0,
                    from include/linux/dma-mapping.h:11,
                    from include/drm/drmP.h:37,
                    from include/kcl/kcl_drm.h:6,
                    from drivers/gpu//drm/ttm/backport/backport.h:6,
                    from <command-line>:0:
   include/linux/mm.h:630:13: note: previous declaration of 'kvfree' was here
    extern void kvfree(const void *addr);
                ^~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:101:21: error: redefinition of 'kvmalloc_array'
    static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
                        ^~~~~~~~~~~~~~
   In file included from include/linux/scatterlist.h:8:0,
                    from include/linux/dma-mapping.h:11,
                    from include/drm/drmP.h:37,
                    from include/kcl/kcl_drm.h:6,
                    from drivers/gpu//drm/ttm/backport/backport.h:6,
                    from <command-line>:0:
   include/linux/mm.h:615:21: note: previous definition of 'kvmalloc_array' was here
    static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
                        ^~~~~~~~~~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:114:21: error: redefinition of 'kvcalloc'
    static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from include/linux/scatterlist.h:8:0,
                    from include/linux/dma-mapping.h:11,
                    from include/drm/drmP.h:37,
                    from include/kcl/kcl_drm.h:6,
                    from drivers/gpu//drm/ttm/backport/backport.h:6,
                    from <command-line>:0:
   include/linux/mm.h:625:21: note: previous definition of 'kvcalloc' was here
    static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
                        ^~~~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:11:0,
                    from <command-line>:0:
   include/kcl/kcl_mm.h:121:20: error: redefinition of 'mmgrab'
    static inline void mmgrab(struct mm_struct *mm)
                       ^~~~~~
   In file included from include/kcl/kcl_mm.h:6:0,
                    from drivers/gpu//drm/ttm/backport/backport.h:11,
                    from <command-line>:0:
   include/linux/sched/mm.h:34:20: note: previous definition of 'mmgrab' was here
    static inline void mmgrab(struct mm_struct *mm)
                       ^~~~~~
   In file included from drivers/gpu//drm/ttm/backport/backport.h:12:0,
                    from <command-line>:0:
   include/kcl/kcl_list.h:6:20: error: redefinition of 'list_bulk_move_tail'
    static inline void list_bulk_move_tail(struct list_head *head,
                       ^~~~~~~~~~~~~~~~~~~
   In file included from include/linux/preempt.h:11:0,
                    from include/linux/rcupdate.h:40,
                    from include/kcl/kcl_rcupdate.h:4,
                    from include/kcl/kcl_fence.h:5,
                    from drivers/gpu//drm/ttm/backport/backport.h:5,
                    from <command-line>:0:
   include/linux/list.h:195:20: note: previous definition of 'list_bulk_move_tail' was here
    static inline void list_bulk_move_tail(struct list_head *head,
                       ^~~~~~~~~~~~~~~~~~~
   drivers/gpu//drm/ttm/ttm_bo_vm.c: In function 'ttm_bo_vm_fault':
>> drivers/gpu//drm/ttm/ttm_bo_vm.c:137:44: error: 'struct vm_fault' has no member named 'virtual_address'
     unsigned long address = (unsigned long)vmf->virtual_address;
                                               ^~
   cc1: some warnings being treated as errors

vim +137 drivers/gpu//drm/ttm/ttm_bo_vm.c

cbe12e74ee4e29 Thomas Hellstrom    2013-10-09  104  
c67fa6edc8b11a Tan Xiaojun         2017-12-25  105  static unsigned long ttm_bo_io_mem_pfn(struct ttm_buffer_object *bo,
c67fa6edc8b11a Tan Xiaojun         2017-12-25  106  				       unsigned long page_offset)
c67fa6edc8b11a Tan Xiaojun         2017-12-25  107  {
c67fa6edc8b11a Tan Xiaojun         2017-12-25  108  	struct ttm_bo_device *bdev = bo->bdev;
c67fa6edc8b11a Tan Xiaojun         2017-12-25  109  
c67fa6edc8b11a Tan Xiaojun         2017-12-25  110  	if (bdev->driver->io_mem_pfn)
c67fa6edc8b11a Tan Xiaojun         2017-12-25  111  		return bdev->driver->io_mem_pfn(bo, page_offset);
c67fa6edc8b11a Tan Xiaojun         2017-12-25  112  
e83bf4adf54ad3 Tan Xiaojun         2017-12-25  113  	return ((bo->mem.bus.base + bo->mem.bus.offset) >> PAGE_SHIFT)
e83bf4adf54ad3 Tan Xiaojun         2017-12-25  114  		+ page_offset;
c67fa6edc8b11a Tan Xiaojun         2017-12-25  115  }
d37fb8b746a5e8 Anatoli Antonovitch 2019-06-26  116  #if defined(HAVE_2ARGS_VIRTUAL_MM_FAULT_FUNCTION)
1eb7eed2b3f8a5 Evan Quan           2017-05-12  117  static vm_fault_t ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
1eb7eed2b3f8a5 Evan Quan           2017-05-12  118  #else
4daa4fba3a3899 Souptick Joarder    2018-06-02  119  static vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf)
1eb7eed2b3f8a5 Evan Quan           2017-05-12  120  #endif
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  121  {
fadbbdd244af97 Flora Cui           2019-09-06  122  #if !defined(HAVE_2ARGS_VIRTUAL_MM_FAULT_FUNCTION)
11bac80004499e Dave Jiang          2017-02-24  123  	struct vm_area_struct *vma = vmf->vma;
1eb7eed2b3f8a5 Evan Quan           2017-05-12  124  #endif
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  125  	struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  126  	    vma->vm_private_data;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  127  	struct ttm_bo_device *bdev = bo->bdev;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  128  	unsigned long page_offset;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  129  	unsigned long page_last;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  130  	unsigned long pfn;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  131  	struct ttm_tt *ttm = NULL;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  132  	struct page *page;
4daa4fba3a3899 Souptick Joarder    2018-06-02  133  	int err;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  134  	int i;
4daa4fba3a3899 Souptick Joarder    2018-06-02  135  	vm_fault_t ret = VM_FAULT_NOPAGE;
5165cd1453625e Flora Cui           2019-09-11  136  #ifndef HAVE_VM_FAULT_ADDRESS_VMA
1eb7eed2b3f8a5 Evan Quan           2017-05-12 @137  	unsigned long address = (unsigned long)vmf->virtual_address;
1eb7eed2b3f8a5 Evan Quan           2017-05-12  138  #else
1a29d85eb0f19b Jan Kara            2016-12-14  139  	unsigned long address = vmf->address;
1eb7eed2b3f8a5 Evan Quan           2017-05-12  140  #endif
eba67093f53532 Thomas Hellstrom    2010-11-11  141  	struct ttm_mem_type_manager *man =
eba67093f53532 Thomas Hellstrom    2010-11-11  142  		&bdev->man[bo->mem.mem_type];
3943875e7b73fd Thomas Hellstrom    2013-11-06  143  	struct vm_area_struct cvma;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  144  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  145  	/*
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  146  	 * Work around locking order reversal in fault / nopfn
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  147  	 * between mmap_sem and bo_reserve: Perform a trylock operation
c58f009e01c918 Thomas Hellstrom    2013-11-14  148  	 * for reserve, and if it fails, retry the fault after waiting
c58f009e01c918 Thomas Hellstrom    2013-11-14  149  	 * for the buffer to become unreserved.
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  150  	 */
1bebc270578bf8 Evan Quan           2019-02-18  151  	if (unlikely(!kcl_reservation_object_trylock(bo->resv))) {
c58f009e01c918 Thomas Hellstrom    2013-11-14  152  		if (vmf->flags & FAULT_FLAG_ALLOW_RETRY) {
e6b6346419c9f5 Chengming Gui       2019-08-28  153  #ifdef FAULT_FLAG_RETRY_NOWAIT
c58f009e01c918 Thomas Hellstrom    2013-11-14  154  			if (!(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) {
8129fdad387ae3 Thomas Zimmermann   2018-06-21  155  				ttm_bo_get(bo);
9bd71d59838222 changzhu            2018-09-30  156  				up_read(&vma->vm_mm->mmap_sem);
c58f009e01c918 Thomas Hellstrom    2013-11-14  157  				(void) ttm_bo_wait_unreserved(bo);
f44907593d746d Thomas Zimmermann   2018-06-21  158  				ttm_bo_put(bo);
c58f009e01c918 Thomas Hellstrom    2013-11-14  159  			}
1eb7eed2b3f8a5 Evan Quan           2017-05-12  160  #else
1eb7eed2b3f8a5 Evan Quan           2017-05-12  161  			up_read(&vma->vm_mm->mmap_sem);
1eb7eed2b3f8a5 Evan Quan           2017-05-12  162  #endif
c58f009e01c918 Thomas Hellstrom    2013-11-14  163  
c58f009e01c918 Thomas Hellstrom    2013-11-14  164  			return VM_FAULT_RETRY;
c58f009e01c918 Thomas Hellstrom    2013-11-14  165  		}
c58f009e01c918 Thomas Hellstrom    2013-11-14  166  
c58f009e01c918 Thomas Hellstrom    2013-11-14  167  		/*
c58f009e01c918 Thomas Hellstrom    2013-11-14  168  		 * If we'd want to change locking order to
c58f009e01c918 Thomas Hellstrom    2013-11-14  169  		 * mmap_sem -> bo::reserve, we'd use a blocking reserve here
c58f009e01c918 Thomas Hellstrom    2013-11-14  170  		 * instead of retrying the fault...
c58f009e01c918 Thomas Hellstrom    2013-11-14  171  		 */
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  172  		return VM_FAULT_NOPAGE;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  173  	}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  174  
667a50db0477d4 Thomas Hellstrom    2014-01-03  175  	/*
667a50db0477d4 Thomas Hellstrom    2014-01-03  176  	 * Refuse to fault imported pages. This should be handled
667a50db0477d4 Thomas Hellstrom    2014-01-03  177  	 * (if at all) by redirecting mmap to the exporter.
667a50db0477d4 Thomas Hellstrom    2014-01-03  178  	 */
667a50db0477d4 Thomas Hellstrom    2014-01-03  179  	if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  180  		ret = VM_FAULT_SIGBUS;
667a50db0477d4 Thomas Hellstrom    2014-01-03  181  		goto out_unlock;
667a50db0477d4 Thomas Hellstrom    2014-01-03  182  	}
667a50db0477d4 Thomas Hellstrom    2014-01-03  183  
82c5da6bf8b55a Jerome Glisse       2010-04-09  184  	if (bdev->driver->fault_reserve_notify) {
5d50fcbda7b0ac Christian König     2019-01-11  185  		struct dma_fence *moving = dma_fence_get(bo->moving);
5d50fcbda7b0ac Christian König     2019-01-11  186  
4daa4fba3a3899 Souptick Joarder    2018-06-02  187  		err = bdev->driver->fault_reserve_notify(bo);
4daa4fba3a3899 Souptick Joarder    2018-06-02  188  		switch (err) {
82c5da6bf8b55a Jerome Glisse       2010-04-09  189  		case 0:
82c5da6bf8b55a Jerome Glisse       2010-04-09  190  			break;
82c5da6bf8b55a Jerome Glisse       2010-04-09  191  		case -EBUSY:
82c5da6bf8b55a Jerome Glisse       2010-04-09  192  		case -ERESTARTSYS:
de8dfb8e3449c7 Tom St Denis        2018-01-26  193  			ret = VM_FAULT_NOPAGE;
82c5da6bf8b55a Jerome Glisse       2010-04-09  194  			goto out_unlock;
82c5da6bf8b55a Jerome Glisse       2010-04-09  195  		default:
de8dfb8e3449c7 Tom St Denis        2018-01-26  196  			ret = VM_FAULT_SIGBUS;
82c5da6bf8b55a Jerome Glisse       2010-04-09  197  			goto out_unlock;
82c5da6bf8b55a Jerome Glisse       2010-04-09  198  		}
5d50fcbda7b0ac Christian König     2019-01-11  199  
5d50fcbda7b0ac Christian König     2019-01-11  200  		if (bo->moving != moving) {
5d50fcbda7b0ac Christian König     2019-01-11  201  			spin_lock(&bdev->glob->lru_lock);
5d50fcbda7b0ac Christian König     2019-01-11  202  			ttm_bo_move_to_lru_tail(bo, NULL);
5d50fcbda7b0ac Christian König     2019-01-11  203  			spin_unlock(&bdev->glob->lru_lock);
5d50fcbda7b0ac Christian König     2019-01-11  204  		}
5d50fcbda7b0ac Christian König     2019-01-11  205  		dma_fence_put(moving);
82c5da6bf8b55a Jerome Glisse       2010-04-09  206  	}
e024e11070a0a0 Dave Airlie         2009-06-24  207  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  208  	/*
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  209  	 * Wait for buffer data in transit, due to a pipelined
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  210  	 * move.
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  211  	 */
1eb7eed2b3f8a5 Evan Quan           2017-05-12  212  	ret = ttm_bo_vm_fault_idle(bo, vma, vmf);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  213  	if (unlikely(ret != 0)) {
e6b6346419c9f5 Chengming Gui       2019-08-28  214  #ifdef FAULT_FLAG_RETRY_NOWAIT
de8dfb8e3449c7 Tom St Denis        2018-01-26  215  		if (ret == VM_FAULT_RETRY &&
3089c1df10e293 Nicolai Hähnle      2017-02-18  216  		    !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) {
1eb7eed2b3f8a5 Evan Quan           2017-05-12  217  #else
1eb7eed2b3f8a5 Evan Quan           2017-05-12  218  		if (ret == VM_FAULT_RETRY) {
1eb7eed2b3f8a5 Evan Quan           2017-05-12  219  #endif
3089c1df10e293 Nicolai Hähnle      2017-02-18  220  			/* The BO has already been unreserved. */
de8dfb8e3449c7 Tom St Denis        2018-01-26  221  			return ret;
3089c1df10e293 Nicolai Hähnle      2017-02-18  222  		}
3089c1df10e293 Nicolai Hähnle      2017-02-18  223  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  224  		goto out_unlock;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  225  	}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  226  
4daa4fba3a3899 Souptick Joarder    2018-06-02  227  	err = ttm_mem_io_lock(man, true);
4daa4fba3a3899 Souptick Joarder    2018-06-02  228  	if (unlikely(err != 0)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  229  		ret = VM_FAULT_NOPAGE;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  230  		goto out_unlock;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  231  	}
4daa4fba3a3899 Souptick Joarder    2018-06-02  232  	err = ttm_mem_io_reserve_vm(bo);
4daa4fba3a3899 Souptick Joarder    2018-06-02  233  	if (unlikely(err != 0)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  234  		ret = VM_FAULT_SIGBUS;
eba67093f53532 Thomas Hellstrom    2010-11-11  235  		goto out_io_unlock;
eba67093f53532 Thomas Hellstrom    2010-11-11  236  	}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  237  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  238  	page_offset = ((address - vma->vm_start) >> PAGE_SHIFT) +
d386735588c3e2 Thomas Hellstrom    2013-12-08  239  		vma->vm_pgoff - drm_vma_node_start(&bo->vma_node);
d386735588c3e2 Thomas Hellstrom    2013-12-08  240  	page_last = vma_pages(vma) + vma->vm_pgoff -
d386735588c3e2 Thomas Hellstrom    2013-12-08  241  		drm_vma_node_start(&bo->vma_node);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  242  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  243  	if (unlikely(page_offset >= bo->num_pages)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  244  		ret = VM_FAULT_SIGBUS;
eba67093f53532 Thomas Hellstrom    2010-11-11  245  		goto out_io_unlock;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  246  	}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  247  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  248  	/*
3943875e7b73fd Thomas Hellstrom    2013-11-06  249  	 * Make a local vma copy to modify the page_prot member
3943875e7b73fd Thomas Hellstrom    2013-11-06  250  	 * and vm_flags if necessary. The vma parameter is protected
3943875e7b73fd Thomas Hellstrom    2013-11-06  251  	 * by mmap_sem in write mode.
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  252  	 */
3943875e7b73fd Thomas Hellstrom    2013-11-06  253  	cvma = *vma;
3943875e7b73fd Thomas Hellstrom    2013-11-06  254  	cvma.vm_page_prot = vm_get_page_prot(cvma.vm_flags);
3943875e7b73fd Thomas Hellstrom    2013-11-06  255  
82c5da6bf8b55a Jerome Glisse       2010-04-09  256  	if (bo->mem.bus.is_iomem) {
3943875e7b73fd Thomas Hellstrom    2013-11-06  257  		cvma.vm_page_prot = ttm_io_prot(bo->mem.placement,
3943875e7b73fd Thomas Hellstrom    2013-11-06  258  						cvma.vm_page_prot);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  259  	} else {
d0cef9fa4411eb Roger He            2017-12-21  260  		struct ttm_operation_ctx ctx = {
d0cef9fa4411eb Roger He            2017-12-21  261  			.interruptible = false,
aa7662b67bf6f5 Roger He            2018-01-17  262  			.no_wait_gpu = false,
aa7662b67bf6f5 Roger He            2018-01-17  263  			.flags = TTM_OPT_FLAG_FORCE_ALLOC
aa7662b67bf6f5 Roger He            2018-01-17  264  
d0cef9fa4411eb Roger He            2017-12-21  265  		};
d0cef9fa4411eb Roger He            2017-12-21  266  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  267  		ttm = bo->ttm;
3943875e7b73fd Thomas Hellstrom    2013-11-06  268  		cvma.vm_page_prot = ttm_io_prot(bo->mem.placement,
3943875e7b73fd Thomas Hellstrom    2013-11-06  269  						cvma.vm_page_prot);
b1e5f172325547 Jerome Glisse       2011-11-02  270  
b1e5f172325547 Jerome Glisse       2011-11-02  271  		/* Allocate all page at once, most common usage */
25893a14c938d5 Christian König     2018-02-01  272  		if (ttm_tt_populate(ttm, &ctx)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  273  			ret = VM_FAULT_OOM;
b1e5f172325547 Jerome Glisse       2011-11-02  274  			goto out_io_unlock;
b1e5f172325547 Jerome Glisse       2011-11-02  275  		}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  276  	}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  277  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  278  	/*
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  279  	 * Speculatively prefault a number of pages. Only error on
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  280  	 * first page.
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  281  	 */
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  282  	for (i = 0; i < TTM_BO_VM_NUM_PREFAULT; ++i) {
95cf9264d5f36c Tom Lendacky        2017-07-17  283  		if (bo->mem.bus.is_iomem) {
18e2e6b7e2735e Anatoli Antonovitch 2019-06-28  284  #ifdef pgprot_decrypted
95cf9264d5f36c Tom Lendacky        2017-07-17  285  			/* Iomem should not be marked encrypted */
95cf9264d5f36c Tom Lendacky        2017-07-17  286  			cvma.vm_page_prot = pgprot_decrypted(cvma.vm_page_prot);
1eb7eed2b3f8a5 Evan Quan           2017-05-12  287  #endif
c67fa6edc8b11a Tan Xiaojun         2017-12-25  288  			pfn = ttm_bo_io_mem_pfn(bo, page_offset);
95cf9264d5f36c Tom Lendacky        2017-07-17  289  		} else {
b1e5f172325547 Jerome Glisse       2011-11-02  290  			page = ttm->pages[page_offset];
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  291  			if (unlikely(!page && i == 0)) {
de8dfb8e3449c7 Tom St Denis        2018-01-26  292  				ret = VM_FAULT_OOM;
eba67093f53532 Thomas Hellstrom    2010-11-11  293  				goto out_io_unlock;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  294  			} else if (unlikely(!page)) {
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  295  				break;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  296  			}
58aa6622d32af7 Thomas Hellstrom    2014-01-03  297  			page->index = drm_vma_node_start(&bo->vma_node) +
58aa6622d32af7 Thomas Hellstrom    2014-01-03  298  				page_offset;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  299  			pfn = page_to_pfn(page);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  300  		}
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  301  
7dfe8b6187f43d Thomas Hellstrom    2014-01-03  302  		if (vma->vm_flags & VM_MIXEDMAP)
1eb7eed2b3f8a5 Evan Quan           2017-05-12  303  			ret = vmf_insert_mixed(&cvma, address,
bb02f27489fe44 Junwei Zhang        2018-08-22  304  				__pfn_to_pfn_t(pfn, PFN_DEV | (bo->ssg_can_map ? PFN_MAP : 0)));
7dfe8b6187f43d Thomas Hellstrom    2014-01-03  305  		else
4daa4fba3a3899 Souptick Joarder    2018-06-02  306  			ret = vmf_insert_pfn(&cvma, address, pfn);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  307  		/*
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  308  		 * Somebody beat us to this PTE or prefaulting to
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  309  		 * an already populated PTE, or prefaulting error.
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  310  		 */
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  311  
4daa4fba3a3899 Souptick Joarder    2018-06-02  312  		if (unlikely((ret == VM_FAULT_NOPAGE && i > 0)))
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  313  			break;
4daa4fba3a3899 Souptick Joarder    2018-06-02  314  		else if (unlikely(ret & VM_FAULT_ERROR))
eba67093f53532 Thomas Hellstrom    2010-11-11  315  			goto out_io_unlock;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  316  
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  317  		address += PAGE_SIZE;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  318  		if (unlikely(++page_offset >= page_last))
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  319  			break;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  320  	}
de8dfb8e3449c7 Tom St Denis        2018-01-26  321  	ret = VM_FAULT_NOPAGE;
eba67093f53532 Thomas Hellstrom    2010-11-11  322  out_io_unlock:
eba67093f53532 Thomas Hellstrom    2010-11-11  323  	ttm_mem_io_unlock(man);
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  324  out_unlock:
1bebc270578bf8 Evan Quan           2019-02-18  325  	kcl_reservation_object_unlock(bo->resv);
de8dfb8e3449c7 Tom St Denis        2018-01-26  326  	return ret;
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  327  }
ba4e7d973dd09b Thomas Hellstrom    2009-06-10  328  

:::::: The code at line 137 was first introduced by commit
:::::: 1eb7eed2b3f8a53b8f348b415501f1ba07cc383c drm/amdkcl: [4.11] fix for uapi/linux/sched/types.h

:::::: TO: Evan Quan <evan.quan at amd.com>
:::::: CC: tianci yin <tianci.yin at amd.com>

---
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: 65135 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190920/49dfba6c/attachment-0001.gz>


More information about the dri-devel mailing list