* 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.