All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:374 amdgpu_ttm_map_buffer() warn: should 'i << 12' be a 64 bit
@ 2021-01-21  4:50 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-01-21  4:50 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 10177 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: "Christian König" <christian.koenig@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
CC: Huang Rui <ray.huang@amd.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   9791581c049c10929e97098374dd1716a81fefcc
commit: 9504578314a70e6d96ee812dc93b5b5c9514b988 drm/amdgpu: add full TMZ support into amdgpu_ttm_map_buffer v2
date:   9 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 9 months ago
config: i386-randconfig-m021-20210121 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:374 amdgpu_ttm_map_buffer() warn: should 'i << 12' be a 64 bit type?

Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:533 amdgpu_move_blit() warn: should 'new_mem->num_pages << 12' be a 64 bit type?
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:838 amdgpu_ttm_io_mem_pfn() warn: should 'page_offset << 12' be a 64 bit type?

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

8892f153c83e521a Christian König 2016-08-17  285  
f0ee63cbc5264dbb Christian König 2020-03-18  286  /**
f0ee63cbc5264dbb Christian König 2020-03-18  287   * amdgpu_ttm_map_buffer - Map memory into the GART windows
f0ee63cbc5264dbb Christian König 2020-03-18  288   * @bo: buffer object to map
f0ee63cbc5264dbb Christian König 2020-03-18  289   * @mem: memory object to map
f0ee63cbc5264dbb Christian König 2020-03-18  290   * @mm_node: drm_mm node object to map
f0ee63cbc5264dbb Christian König 2020-03-18  291   * @num_pages: number of pages to map
f0ee63cbc5264dbb Christian König 2020-03-18  292   * @offset: offset into @mm_node where to start
f0ee63cbc5264dbb Christian König 2020-03-18  293   * @window: which GART window to use
f0ee63cbc5264dbb Christian König 2020-03-18  294   * @ring: DMA ring to use for the copy
f0ee63cbc5264dbb Christian König 2020-03-18  295   * @tmz: if we should setup a TMZ enabled mapping
f0ee63cbc5264dbb Christian König 2020-03-18  296   * @addr: resulting address inside the MC address space
f0ee63cbc5264dbb Christian König 2020-03-18  297   *
f0ee63cbc5264dbb Christian König 2020-03-18  298   * Setup one of the GART windows to access a specific piece of memory or return
f0ee63cbc5264dbb Christian König 2020-03-18  299   * the physical address for local memory.
f0ee63cbc5264dbb Christian König 2020-03-18  300   */
f0ee63cbc5264dbb Christian König 2020-03-18  301  static int amdgpu_ttm_map_buffer(struct ttm_buffer_object *bo,
f0ee63cbc5264dbb Christian König 2020-03-18  302  				 struct ttm_mem_reg *mem,
f0ee63cbc5264dbb Christian König 2020-03-18  303  				 struct drm_mm_node *mm_node,
f0ee63cbc5264dbb Christian König 2020-03-18  304  				 unsigned num_pages, uint64_t offset,
f0ee63cbc5264dbb Christian König 2020-03-18  305  				 unsigned window, struct amdgpu_ring *ring,
f0ee63cbc5264dbb Christian König 2020-03-18  306  				 bool tmz, uint64_t *addr)
f0ee63cbc5264dbb Christian König 2020-03-18  307  {
f0ee63cbc5264dbb Christian König 2020-03-18  308  	struct amdgpu_device *adev = ring->adev;
f0ee63cbc5264dbb Christian König 2020-03-18  309  	struct amdgpu_job *job;
f0ee63cbc5264dbb Christian König 2020-03-18  310  	unsigned num_dw, num_bytes;
f0ee63cbc5264dbb Christian König 2020-03-18  311  	struct dma_fence *fence;
f0ee63cbc5264dbb Christian König 2020-03-18  312  	uint64_t src_addr, dst_addr;
9504578314a70e6d Christian König 2020-03-19  313  	void *cpu_addr;
f0ee63cbc5264dbb Christian König 2020-03-18  314  	uint64_t flags;
9504578314a70e6d Christian König 2020-03-19  315  	unsigned int i;
f0ee63cbc5264dbb Christian König 2020-03-18  316  	int r;
f0ee63cbc5264dbb Christian König 2020-03-18  317  
f0ee63cbc5264dbb Christian König 2020-03-18  318  	BUG_ON(adev->mman.buffer_funcs->copy_max_bytes <
f0ee63cbc5264dbb Christian König 2020-03-18  319  	       AMDGPU_GTT_MAX_TRANSFER_SIZE * 8);
f0ee63cbc5264dbb Christian König 2020-03-18  320  
f0ee63cbc5264dbb Christian König 2020-03-18  321  	/* Map only what can't be accessed directly */
9504578314a70e6d Christian König 2020-03-19  322  	if (!tmz && mem->start != AMDGPU_BO_INVALID_OFFSET) {
f0ee63cbc5264dbb Christian König 2020-03-18  323  		*addr = amdgpu_mm_node_addr(bo, mm_node, mem) + offset;
f0ee63cbc5264dbb Christian König 2020-03-18  324  		return 0;
f0ee63cbc5264dbb Christian König 2020-03-18  325  	}
f0ee63cbc5264dbb Christian König 2020-03-18  326  
f0ee63cbc5264dbb Christian König 2020-03-18  327  	*addr = adev->gmc.gart_start;
f0ee63cbc5264dbb Christian König 2020-03-18  328  	*addr += (u64)window * AMDGPU_GTT_MAX_TRANSFER_SIZE *
f0ee63cbc5264dbb Christian König 2020-03-18  329  		AMDGPU_GPU_PAGE_SIZE;
f0ee63cbc5264dbb Christian König 2020-03-18  330  	*addr += offset & ~PAGE_MASK;
f0ee63cbc5264dbb Christian König 2020-03-18  331  
f0ee63cbc5264dbb Christian König 2020-03-18  332  	num_dw = ALIGN(adev->mman.buffer_funcs->copy_num_dw, 8);
f0ee63cbc5264dbb Christian König 2020-03-18  333  	num_bytes = num_pages * 8;
f0ee63cbc5264dbb Christian König 2020-03-18  334  
f0ee63cbc5264dbb Christian König 2020-03-18  335  	r = amdgpu_job_alloc_with_ib(adev, num_dw * 4 + num_bytes,
f0ee63cbc5264dbb Christian König 2020-03-18  336  				     AMDGPU_IB_POOL_NORMAL, &job);
f0ee63cbc5264dbb Christian König 2020-03-18  337  	if (r)
f0ee63cbc5264dbb Christian König 2020-03-18  338  		return r;
f0ee63cbc5264dbb Christian König 2020-03-18  339  
f0ee63cbc5264dbb Christian König 2020-03-18  340  	src_addr = num_dw * 4;
f0ee63cbc5264dbb Christian König 2020-03-18  341  	src_addr += job->ibs[0].gpu_addr;
f0ee63cbc5264dbb Christian König 2020-03-18  342  
f0ee63cbc5264dbb Christian König 2020-03-18  343  	dst_addr = amdgpu_bo_gpu_offset(adev->gart.bo);
f0ee63cbc5264dbb Christian König 2020-03-18  344  	dst_addr += window * AMDGPU_GTT_MAX_TRANSFER_SIZE * 8;
f0ee63cbc5264dbb Christian König 2020-03-18  345  	amdgpu_emit_copy_buffer(adev, &job->ibs[0], src_addr,
f0ee63cbc5264dbb Christian König 2020-03-18  346  				dst_addr, num_bytes, false);
f0ee63cbc5264dbb Christian König 2020-03-18  347  
f0ee63cbc5264dbb Christian König 2020-03-18  348  	amdgpu_ring_pad_ib(ring, &job->ibs[0]);
f0ee63cbc5264dbb Christian König 2020-03-18  349  	WARN_ON(job->ibs[0].length_dw > num_dw);
f0ee63cbc5264dbb Christian König 2020-03-18  350  
f0ee63cbc5264dbb Christian König 2020-03-18  351  	flags = amdgpu_ttm_tt_pte_flags(adev, bo->ttm, mem);
f0ee63cbc5264dbb Christian König 2020-03-18  352  	if (tmz)
f0ee63cbc5264dbb Christian König 2020-03-18  353  		flags |= AMDGPU_PTE_TMZ;
f0ee63cbc5264dbb Christian König 2020-03-18  354  
9504578314a70e6d Christian König 2020-03-19  355  	cpu_addr = &job->ibs[0].ptr[num_dw];
9504578314a70e6d Christian König 2020-03-19  356  
9504578314a70e6d Christian König 2020-03-19  357  	if (mem->mem_type == TTM_PL_TT) {
9504578314a70e6d Christian König 2020-03-19  358  		struct ttm_dma_tt *dma;
9504578314a70e6d Christian König 2020-03-19  359  		dma_addr_t *dma_address;
9504578314a70e6d Christian König 2020-03-19  360  
9504578314a70e6d Christian König 2020-03-19  361  		dma = container_of(bo->ttm, struct ttm_dma_tt, ttm);
9504578314a70e6d Christian König 2020-03-19  362  		dma_address = &dma->dma_address[offset >> PAGE_SHIFT];
f0ee63cbc5264dbb Christian König 2020-03-18  363  		r = amdgpu_gart_map(adev, 0, num_pages, dma_address, flags,
9504578314a70e6d Christian König 2020-03-19  364  				    cpu_addr);
9504578314a70e6d Christian König 2020-03-19  365  		if (r)
9504578314a70e6d Christian König 2020-03-19  366  			goto error_free;
9504578314a70e6d Christian König 2020-03-19  367  	} else {
9504578314a70e6d Christian König 2020-03-19  368  		dma_addr_t dma_address;
9504578314a70e6d Christian König 2020-03-19  369  
9504578314a70e6d Christian König 2020-03-19  370  		dma_address = (mm_node->start << PAGE_SHIFT) + offset;
9504578314a70e6d Christian König 2020-03-19  371  		dma_address += adev->vm_manager.vram_base_offset;
9504578314a70e6d Christian König 2020-03-19  372  
9504578314a70e6d Christian König 2020-03-19  373  		for (i = 0; i < num_pages; ++i) {
9504578314a70e6d Christian König 2020-03-19 @374  			r = amdgpu_gart_map(adev, i << PAGE_SHIFT, 1,
9504578314a70e6d Christian König 2020-03-19  375  					    &dma_address, flags, cpu_addr);
f0ee63cbc5264dbb Christian König 2020-03-18  376  			if (r)
f0ee63cbc5264dbb Christian König 2020-03-18  377  				goto error_free;
f0ee63cbc5264dbb Christian König 2020-03-18  378  
9504578314a70e6d Christian König 2020-03-19  379  			dma_address += PAGE_SIZE;
9504578314a70e6d Christian König 2020-03-19  380  		}
9504578314a70e6d Christian König 2020-03-19  381  	}
9504578314a70e6d Christian König 2020-03-19  382  
f0ee63cbc5264dbb Christian König 2020-03-18  383  	r = amdgpu_job_submit(job, &adev->mman.entity,
f0ee63cbc5264dbb Christian König 2020-03-18  384  			      AMDGPU_FENCE_OWNER_UNDEFINED, &fence);
f0ee63cbc5264dbb Christian König 2020-03-18  385  	if (r)
f0ee63cbc5264dbb Christian König 2020-03-18  386  		goto error_free;
f0ee63cbc5264dbb Christian König 2020-03-18  387  
f0ee63cbc5264dbb Christian König 2020-03-18  388  	dma_fence_put(fence);
f0ee63cbc5264dbb Christian König 2020-03-18  389  
f0ee63cbc5264dbb Christian König 2020-03-18  390  	return r;
f0ee63cbc5264dbb Christian König 2020-03-18  391  
f0ee63cbc5264dbb Christian König 2020-03-18  392  error_free:
f0ee63cbc5264dbb Christian König 2020-03-18  393  	amdgpu_job_free(job);
f0ee63cbc5264dbb Christian König 2020-03-18  394  	return r;
f0ee63cbc5264dbb Christian König 2020-03-18  395  }
f0ee63cbc5264dbb Christian König 2020-03-18  396  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34826 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-01-21  4:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-21  4:50 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:374 amdgpu_ttm_map_buffer() warn: should 'i << 12' be a 64 bit kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.