From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1405:2: warning: Value stored to 'bo_size' is never read [clang-analyzer-deadcode.DeadStores]
Date: Sun, 12 Dec 2021 04:11:29 +0800 [thread overview]
Message-ID: <202112120420.eGUdurzf-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 26656 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Felix Kuehling <Felix.Kuehling@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: eccea80be2576dee642bc6cab20f1a242d58a08c
commit: c780b2eedbd0ddc9f594379fd39281100693fd3d drm/amdgpu: Rename kfd_bo_va_list to kfd_mem_attachment
date: 7 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 7 months ago
config: x86_64-randconfig-c007-20211208 (https://download.01.org/0day-ci/archive/20211212/202112120420.eGUdurzf-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c780b2eedbd0ddc9f594379fd39281100693fd3d
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout c780b2eedbd0ddc9f594379fd39281100693fd3d
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^
drivers/i3c/master/svc-i3c-master.c:260:7: note: Assuming the condition is true
if (master->addrs[i] == ibiaddr)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:260:3: note: Taking true branch
if (master->addrs[i] == ibiaddr)
^
drivers/i3c/master/svc-i3c-master.c:261:4: note: Execution continues on line 263
break;
^
drivers/i3c/master/svc-i3c-master.c:263:6: note: 'i' is not equal to SVC_I3C_MAX_DEVS
if (i == SVC_I3C_MAX_DEVS)
^
drivers/i3c/master/svc-i3c-master.c:263:2: note: Taking false branch
if (i == SVC_I3C_MAX_DEVS)
^
drivers/i3c/master/svc-i3c-master.c:266:2: note: Returning without writing to 'master->ibi.tbq_slot', which participates in a condition later
return master->descs[i];
^
drivers/i3c/master/svc-i3c-master.c:266:2: note: Returning pointer
return master->descs[i];
^~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:371:9: note: Returning from 'svc_i3c_master_dev_from_addr'
dev = svc_i3c_master_dev_from_addr(master, ibiaddr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:371:3: note: Value assigned to 'dev'
dev = svc_i3c_master_dev_from_addr(master, ibiaddr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:372:7: note: Assuming 'dev' is null
if (!dev)
^~~~
drivers/i3c/master/svc-i3c-master.c:372:3: note: Taking true branch
if (!dev)
^
drivers/i3c/master/svc-i3c-master.c:373:4: note: Calling 'svc_i3c_master_nack_ibi'
svc_i3c_master_nack_ibi(master);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:337:1: note: Returning without writing to 'master->ibi.tbq_slot', which participates in a condition later
}
^
drivers/i3c/master/svc-i3c-master.c:373:4: note: Returning from 'svc_i3c_master_nack_ibi'
svc_i3c_master_nack_ibi(master);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:376:3: note: Execution continues on line 392
break;
^
drivers/i3c/master/svc-i3c-master.c:392:6: note: Assuming the condition is true
if (svc_i3c_master_error(master)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:392:2: note: Taking true branch
if (svc_i3c_master_error(master)) {
^
drivers/i3c/master/svc-i3c-master.c:393:7: note: Assuming field 'tbq_slot' is non-null
if (master->ibi.tbq_slot) {
^~~~~~~~~~~~~~~~~~~~
drivers/i3c/master/svc-i3c-master.c:393:3: note: Taking true branch
if (master->ibi.tbq_slot) {
^
drivers/i3c/master/svc-i3c-master.c:394:35: note: Passing null pointer value via 1st parameter 'dev'
data = i3c_dev_get_master_data(dev);
^~~
drivers/i3c/master/svc-i3c-master.c:394:11: note: Calling 'i3c_dev_get_master_data'
data = i3c_dev_get_master_data(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/i3c/master.h:557:9: note: Dereference of null pointer
return dev->common.master_priv;
^~~~~~~~~~~~~~~~~~~~~~~
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
11 warnings generated.
drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_dbgdev.c:773:2: warning: Value stored to 'status' is never read [clang-analyzer-deadcode.DeadStores]
status = 0;
^ ~
drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_dbgdev.c:773:2: note: Value stored to 'status' is never read
status = 0;
^ ~
Suppressed 10 warnings (10 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
Suppressed 10 warnings (10 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
Suppressed 10 warnings (10 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
Suppressed 10 warnings (10 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
Suppressed 10 warnings (10 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:281:14: warning: Although the value stored to 'k' is used in the enclosing expression, the value is never actually read from 'k' [clang-analyzer-deadcode.DeadStores]
for (i = j, k = 0; i < old->shared_count; ++i) {
^ ~
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:281:14: note: Although the value stored to 'k' is used in the enclosing expression, the value is never actually read from 'k'
for (i = j, k = 0; i < old->shared_count; ++i) {
^ ~
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1405:2: warning: Value stored to 'bo_size' is never read [clang-analyzer-deadcode.DeadStores]
bo_size = bo->tbo.base.size;
^ ~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1405:2: note: Value stored to 'bo_size' is never read
bo_size = bo->tbo.base.size;
^ ~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1508:16: warning: Value stored to 'bo_size' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
unsigned long bo_size = mem->bo->tbo.base.size;
^~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1508:16: note: Value stored to 'bo_size' during its initialization is never read
unsigned long bo_size = mem->bo->tbo.base.size;
^~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
Suppressed 7 warnings (7 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
drivers/mfd/max8997-irq.c:248:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mfd/max8997-irq.c:248:3: note: Value stored to 'ret' is never read
ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
drivers/gpu/drm/panel/panel-xinpeng-xpp055c272.c:74:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = ctx->dev;
^~~ ~~~~~~~~
drivers/gpu/drm/panel/panel-xinpeng-xpp055c272.c:74:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = ctx->dev;
^~~ ~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
vim +/bo_size +1405 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
a46a2cd103a863 Felix Kuehling 2018-02-06 1364
a46a2cd103a863 Felix Kuehling 2018-02-06 1365 int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
b40a6ab2cf9213 Felix Kuehling 2021-04-07 1366 struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv)
a46a2cd103a863 Felix Kuehling 2018-02-06 1367 {
a46a2cd103a863 Felix Kuehling 2018-02-06 1368 struct amdgpu_device *adev = get_amdgpu_device(kgd);
b40a6ab2cf9213 Felix Kuehling 2021-04-07 1369 struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv);
a46a2cd103a863 Felix Kuehling 2018-02-06 1370 int ret;
a46a2cd103a863 Felix Kuehling 2018-02-06 1371 struct amdgpu_bo *bo;
a46a2cd103a863 Felix Kuehling 2018-02-06 1372 uint32_t domain;
c780b2eedbd0dd Felix Kuehling 2021-04-08 1373 struct kfd_mem_attachment *entry;
a46a2cd103a863 Felix Kuehling 2018-02-06 1374 struct bo_vm_reservation_context ctx;
c780b2eedbd0dd Felix Kuehling 2021-04-08 1375 struct kfd_mem_attachment *attachment = NULL;
c780b2eedbd0dd Felix Kuehling 2021-04-08 1376 struct kfd_mem_attachment *attachment_aql = NULL;
a46a2cd103a863 Felix Kuehling 2018-02-06 1377 unsigned long bo_size;
5ae0283e831a94 Felix Kuehling 2018-03-23 1378 bool is_invalid_userptr = false;
a46a2cd103a863 Felix Kuehling 2018-02-06 1379
a46a2cd103a863 Felix Kuehling 2018-02-06 1380 bo = mem->bo;
a46a2cd103a863 Felix Kuehling 2018-02-06 1381 if (!bo) {
a46a2cd103a863 Felix Kuehling 2018-02-06 1382 pr_err("Invalid BO when mapping memory to GPU\n");
5ae0283e831a94 Felix Kuehling 2018-03-23 1383 return -EINVAL;
5ae0283e831a94 Felix Kuehling 2018-03-23 1384 }
5ae0283e831a94 Felix Kuehling 2018-03-23 1385
5ae0283e831a94 Felix Kuehling 2018-03-23 1386 /* Make sure restore is not running concurrently. Since we
5ae0283e831a94 Felix Kuehling 2018-03-23 1387 * don't map invalid userptr BOs, we rely on the next restore
5ae0283e831a94 Felix Kuehling 2018-03-23 1388 * worker to do the mapping
5ae0283e831a94 Felix Kuehling 2018-03-23 1389 */
5ae0283e831a94 Felix Kuehling 2018-03-23 1390 mutex_lock(&mem->process_info->lock);
5ae0283e831a94 Felix Kuehling 2018-03-23 1391
5ae0283e831a94 Felix Kuehling 2018-03-23 1392 /* Lock mmap-sem. If we find an invalid userptr BO, we can be
5ae0283e831a94 Felix Kuehling 2018-03-23 1393 * sure that the MMU notifier is no longer running
5ae0283e831a94 Felix Kuehling 2018-03-23 1394 * concurrently and the queues are actually stopped
5ae0283e831a94 Felix Kuehling 2018-03-23 1395 */
5ae0283e831a94 Felix Kuehling 2018-03-23 1396 if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 1397 mmap_write_lock(current->mm);
5ae0283e831a94 Felix Kuehling 2018-03-23 1398 is_invalid_userptr = atomic_read(&mem->invalid);
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 1399 mmap_write_unlock(current->mm);
a46a2cd103a863 Felix Kuehling 2018-02-06 1400 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1401
5ae0283e831a94 Felix Kuehling 2018-03-23 1402 mutex_lock(&mem->lock);
5ae0283e831a94 Felix Kuehling 2018-03-23 1403
a46a2cd103a863 Felix Kuehling 2018-02-06 1404 domain = mem->domain;
8c392cd5f1c638 Daniel Vetter 2020-12-14 @1405 bo_size = bo->tbo.base.size;
a46a2cd103a863 Felix Kuehling 2018-02-06 1406
a46a2cd103a863 Felix Kuehling 2018-02-06 1407 pr_debug("Map VA 0x%llx - 0x%llx to vm %p domain %s\n",
a46a2cd103a863 Felix Kuehling 2018-02-06 1408 mem->va,
a46a2cd103a863 Felix Kuehling 2018-02-06 1409 mem->va + bo_size * (1 + mem->aql_queue),
b40a6ab2cf9213 Felix Kuehling 2021-04-07 1410 avm, domain_string(domain));
a46a2cd103a863 Felix Kuehling 2018-02-06 1411
b40a6ab2cf9213 Felix Kuehling 2021-04-07 1412 ret = reserve_bo_and_vm(mem, avm, &ctx);
a46a2cd103a863 Felix Kuehling 2018-02-06 1413 if (unlikely(ret))
a46a2cd103a863 Felix Kuehling 2018-02-06 1414 goto out;
a46a2cd103a863 Felix Kuehling 2018-02-06 1415
5ae0283e831a94 Felix Kuehling 2018-03-23 1416 /* Userptr can be marked as "not invalid", but not actually be
5ae0283e831a94 Felix Kuehling 2018-03-23 1417 * validated yet (still in the system domain). In that case
5ae0283e831a94 Felix Kuehling 2018-03-23 1418 * the queues are still stopped and we can leave mapping for
5ae0283e831a94 Felix Kuehling 2018-03-23 1419 * the next restore worker
5ae0283e831a94 Felix Kuehling 2018-03-23 1420 */
0f04e538580c08 Felix Kuehling 2018-05-03 1421 if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm) &&
0f04e538580c08 Felix Kuehling 2018-05-03 1422 bo->tbo.mem.mem_type == TTM_PL_SYSTEM)
5ae0283e831a94 Felix Kuehling 2018-03-23 1423 is_invalid_userptr = true;
5ae0283e831a94 Felix Kuehling 2018-03-23 1424
c780b2eedbd0dd Felix Kuehling 2021-04-08 1425 if (!kfd_mem_is_attached(avm, mem)) {
c780b2eedbd0dd Felix Kuehling 2021-04-08 1426 ret = kfd_mem_attach(adev, mem, avm, false, &attachment);
a46a2cd103a863 Felix Kuehling 2018-02-06 1427 if (ret)
c780b2eedbd0dd Felix Kuehling 2021-04-08 1428 goto attach_failed;
a46a2cd103a863 Felix Kuehling 2018-02-06 1429 if (mem->aql_queue) {
c780b2eedbd0dd Felix Kuehling 2021-04-08 1430 ret = kfd_mem_attach(adev, mem, avm, true,
c780b2eedbd0dd Felix Kuehling 2021-04-08 1431 &attachment_aql);
a46a2cd103a863 Felix Kuehling 2018-02-06 1432 if (ret)
c780b2eedbd0dd Felix Kuehling 2021-04-08 1433 goto attach_failed_aql;
a46a2cd103a863 Felix Kuehling 2018-02-06 1434 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1435 } else {
5b21d3e5fd2110 Felix Kuehling 2018-03-15 1436 ret = vm_validate_pt_pd_bos(avm);
a46a2cd103a863 Felix Kuehling 2018-02-06 1437 if (unlikely(ret))
c780b2eedbd0dd Felix Kuehling 2021-04-08 1438 goto attach_failed;
a46a2cd103a863 Felix Kuehling 2018-02-06 1439 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1440
5ae0283e831a94 Felix Kuehling 2018-03-23 1441 if (mem->mapped_to_gpu_memory == 0 &&
5ae0283e831a94 Felix Kuehling 2018-03-23 1442 !amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
a46a2cd103a863 Felix Kuehling 2018-02-06 1443 /* Validate BO only once. The eviction fence gets added to BO
a46a2cd103a863 Felix Kuehling 2018-02-06 1444 * the first time it is mapped. Validate will wait for all
a46a2cd103a863 Felix Kuehling 2018-02-06 1445 * background evictions to complete.
a46a2cd103a863 Felix Kuehling 2018-02-06 1446 */
a46a2cd103a863 Felix Kuehling 2018-02-06 1447 ret = amdgpu_amdkfd_bo_validate(bo, domain, true);
a46a2cd103a863 Felix Kuehling 2018-02-06 1448 if (ret) {
a46a2cd103a863 Felix Kuehling 2018-02-06 1449 pr_debug("Validate failed\n");
a46a2cd103a863 Felix Kuehling 2018-02-06 1450 goto map_bo_to_gpuvm_failed;
a46a2cd103a863 Felix Kuehling 2018-02-06 1451 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1452 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1453
c780b2eedbd0dd Felix Kuehling 2021-04-08 1454 list_for_each_entry(entry, &mem->attachments, list) {
c780b2eedbd0dd Felix Kuehling 2021-04-08 1455 if (entry->bo_va->base.vm != avm || entry->is_mapped)
c780b2eedbd0dd Felix Kuehling 2021-04-08 1456 continue;
c780b2eedbd0dd Felix Kuehling 2021-04-08 1457
a46a2cd103a863 Felix Kuehling 2018-02-06 1458 pr_debug("\t map VA 0x%llx - 0x%llx in entry %p\n",
c780b2eedbd0dd Felix Kuehling 2021-04-08 1459 entry->va, entry->va + bo_size, entry);
a46a2cd103a863 Felix Kuehling 2018-02-06 1460
5ae0283e831a94 Felix Kuehling 2018-03-23 1461 ret = map_bo_to_gpuvm(adev, entry, ctx.sync,
5ae0283e831a94 Felix Kuehling 2018-03-23 1462 is_invalid_userptr);
a46a2cd103a863 Felix Kuehling 2018-02-06 1463 if (ret) {
0d87c9cfc08e15 Kent Russell 2019-05-01 1464 pr_err("Failed to map bo to gpuvm\n");
a46a2cd103a863 Felix Kuehling 2018-02-06 1465 goto map_bo_to_gpuvm_failed;
a46a2cd103a863 Felix Kuehling 2018-02-06 1466 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1467
b40a6ab2cf9213 Felix Kuehling 2021-04-07 1468 ret = vm_update_pds(avm, ctx.sync);
a46a2cd103a863 Felix Kuehling 2018-02-06 1469 if (ret) {
a46a2cd103a863 Felix Kuehling 2018-02-06 1470 pr_err("Failed to update page directories\n");
a46a2cd103a863 Felix Kuehling 2018-02-06 1471 goto map_bo_to_gpuvm_failed;
a46a2cd103a863 Felix Kuehling 2018-02-06 1472 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1473
a46a2cd103a863 Felix Kuehling 2018-02-06 1474 entry->is_mapped = true;
a46a2cd103a863 Felix Kuehling 2018-02-06 1475 mem->mapped_to_gpu_memory++;
a46a2cd103a863 Felix Kuehling 2018-02-06 1476 pr_debug("\t INC mapping count %d\n",
a46a2cd103a863 Felix Kuehling 2018-02-06 1477 mem->mapped_to_gpu_memory);
a46a2cd103a863 Felix Kuehling 2018-02-06 1478 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1479
4671078eb8e390 Christian König 2020-09-21 1480 if (!amdgpu_ttm_tt_get_usermm(bo->tbo.ttm) && !bo->tbo.pin_count)
a46a2cd103a863 Felix Kuehling 2018-02-06 1481 amdgpu_bo_fence(bo,
5b21d3e5fd2110 Felix Kuehling 2018-03-15 1482 &avm->process_info->eviction_fence->base,
a46a2cd103a863 Felix Kuehling 2018-02-06 1483 true);
a46a2cd103a863 Felix Kuehling 2018-02-06 1484 ret = unreserve_bo_and_vms(&ctx, false, false);
a46a2cd103a863 Felix Kuehling 2018-02-06 1485
a46a2cd103a863 Felix Kuehling 2018-02-06 1486 goto out;
a46a2cd103a863 Felix Kuehling 2018-02-06 1487
a46a2cd103a863 Felix Kuehling 2018-02-06 1488 map_bo_to_gpuvm_failed:
c780b2eedbd0dd Felix Kuehling 2021-04-08 1489 if (attachment_aql)
c780b2eedbd0dd Felix Kuehling 2021-04-08 1490 kfd_mem_detach(attachment_aql);
c780b2eedbd0dd Felix Kuehling 2021-04-08 1491 attach_failed_aql:
c780b2eedbd0dd Felix Kuehling 2021-04-08 1492 if (attachment)
c780b2eedbd0dd Felix Kuehling 2021-04-08 1493 kfd_mem_detach(attachment);
c780b2eedbd0dd Felix Kuehling 2021-04-08 1494 attach_failed:
a46a2cd103a863 Felix Kuehling 2018-02-06 1495 unreserve_bo_and_vms(&ctx, false, false);
a46a2cd103a863 Felix Kuehling 2018-02-06 1496 out:
a46a2cd103a863 Felix Kuehling 2018-02-06 1497 mutex_unlock(&mem->process_info->lock);
a46a2cd103a863 Felix Kuehling 2018-02-06 1498 mutex_unlock(&mem->lock);
a46a2cd103a863 Felix Kuehling 2018-02-06 1499 return ret;
a46a2cd103a863 Felix Kuehling 2018-02-06 1500 }
a46a2cd103a863 Felix Kuehling 2018-02-06 1501
:::::: The code at line 1405 was first introduced by commit
:::::: 8c392cd5f1c638f953ebf2c6f4baca9df9e699f4 drm/amdkfd: fix ttm size refactor fallout
:::::: TO: Daniel Vetter <daniel.vetter@ffwll.ch>
:::::: CC: Daniel Vetter <daniel.vetter@ffwll.ch>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2021-12-11 20:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-11 20:11 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-12-10 3:34 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c:1405:2: warning: Value stored to 'bo_size' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2021-12-10 2:53 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202112120420.eGUdurzf-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.