tree:   git://people.freedesktop.org/~agd5f/linux.git drm-next-4.18-wip
head:   52132fd03504140b4cc58c01b19e82929a03af7a
commit: 7bcfcb8217c6ab4224c7de5074132f2185558b72 [182/214] drm/amdgpu: simplify 
bo_va list when vm bo update (v2)

smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1571 amdgpu_vm_bo_update() error: we 
previously assumed 'bo' could be null (see line 1537)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1572 amdgpu_vm_bo_update() warn: 
variable dereferenced before check 'bo' (see line 1571)

git remote add radeon-alex git://people.freedesktop.org/~agd5f/linux.git
git remote update radeon-alex
git checkout 7bcfcb8217c6ab4224c7de5074132f2185558b72
vim +/bo +1571 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

a14faa65 Christian König 2016-01-25  1489  
a14faa65 Christian König 2016-01-25  1490  /**
d38ceaf9 Alex Deucher    2015-04-20  1491   * amdgpu_vm_bo_update - update all 
BO mappings in the vm page table
d38ceaf9 Alex Deucher    2015-04-20  1492   *
d38ceaf9 Alex Deucher    2015-04-20  1493   * @adev: amdgpu_device pointer
d38ceaf9 Alex Deucher    2015-04-20  1494   * @bo_va: requested BO and VM object
99e124f4 Christian König 2016-08-16  1495   * @clear: if true clear the entries
d38ceaf9 Alex Deucher    2015-04-20  1496   *
d38ceaf9 Alex Deucher    2015-04-20  1497   * Fill in the page table entries 
for @bo_va.
d38ceaf9 Alex Deucher    2015-04-20  1498   * Returns 0 for success, -EINVAL 
for failure.
d38ceaf9 Alex Deucher    2015-04-20  1499   */
d38ceaf9 Alex Deucher    2015-04-20  1500  int amdgpu_vm_bo_update(struct 
amdgpu_device *adev,
d38ceaf9 Alex Deucher    2015-04-20  1501                       struct 
amdgpu_bo_va *bo_va,
99e124f4 Christian König 2016-08-16  1502                       bool clear)
d38ceaf9 Alex Deucher    2015-04-20  1503  {
ec681545 Christian König 2017-08-01  1504       struct amdgpu_bo *bo = 
bo_va->base.bo;
ec681545 Christian König 2017-08-01  1505       struct amdgpu_vm *vm = 
bo_va->base.vm;
d38ceaf9 Alex Deucher    2015-04-20  1506       struct amdgpu_bo_va_mapping 
*mapping;
8358dcee Christian König 2016-03-30  1507       dma_addr_t *pages_addr = NULL;
99e124f4 Christian König 2016-08-16  1508       struct ttm_mem_reg *mem;
63e0ba40 Christian König 2016-08-16  1509       struct drm_mm_node *nodes;
4e55eb38 Christian König 2017-09-11  1510       struct dma_fence *exclusive, 
**last_update;
457e0fee Christian König 2017-08-22  1511       uint64_t flags;
7bcfcb82 Junwei Zhang    2018-04-19  1512       uint32_t mem_type;
d38ceaf9 Alex Deucher    2015-04-20  1513       int r;
d38ceaf9 Alex Deucher    2015-04-20  1514  
ec681545 Christian König 2017-08-01  1515       if (clear || !bo_va->base.bo) {
99e124f4 Christian König 2016-08-16  1516               mem = NULL;
63e0ba40 Christian König 2016-08-16  1517               nodes = NULL;
99e124f4 Christian König 2016-08-16  1518               exclusive = NULL;
99e124f4 Christian König 2016-08-16  1519       } else {
8358dcee Christian König 2016-03-30  1520               struct ttm_dma_tt *ttm;
8358dcee Christian König 2016-03-30  1521  
ec681545 Christian König 2017-08-01  1522               mem = 
&bo_va->base.bo->tbo.mem;
63e0ba40 Christian König 2016-08-16  1523               nodes = mem->mm_node;
63e0ba40 Christian König 2016-08-16  1524               if (mem->mem_type == 
TTM_PL_TT) {
ec681545 Christian König 2017-08-01  1525                       ttm = 
container_of(bo_va->base.bo->tbo.ttm,
ec681545 Christian König 2017-08-01  1526                                       
   struct ttm_dma_tt, ttm);
8358dcee Christian König 2016-03-30  1527                       pages_addr = 
ttm->dma_address;
9ab21462 Christian König 2015-11-30  1528               }
ec681545 Christian König 2017-08-01  1529               exclusive = 
reservation_object_get_excl(bo->tbo.resv);
d38ceaf9 Alex Deucher    2015-04-20  1530       }
d38ceaf9 Alex Deucher    2015-04-20  1531  
457e0fee Christian König 2017-08-22  1532       if (bo)
ec681545 Christian König 2017-08-01  1533               flags = 
amdgpu_ttm_tt_pte_flags(adev, bo->tbo.ttm, mem);
457e0fee Christian König 2017-08-22  1534       else
a5f6b5b1 Christian König 2017-01-30  1535               flags = 0x0;
d38ceaf9 Alex Deucher    2015-04-20  1536  
4e55eb38 Christian König 2017-09-11 @1537       if (clear || (bo && 
bo->tbo.resv == vm->root.base.bo->tbo.resv))
                                                              ^^
Checked.

4e55eb38 Christian König 2017-09-11  1538               last_update = 
&vm->last_update;
4e55eb38 Christian König 2017-09-11  1539       else
4e55eb38 Christian König 2017-09-11  1540               last_update = 
&bo_va->last_pt_update;
4e55eb38 Christian König 2017-09-11  1541  
3d7d4d3a Christian König 2017-08-23  1542       if (!clear && 
bo_va->base.moved) {
3d7d4d3a Christian König 2017-08-23  1543               bo_va->base.moved = 
false;
7fc11959 Christian König 2015-07-30  1544               
list_splice_init(&bo_va->valids, &bo_va->invalids);
3d7d4d3a Christian König 2017-08-23  1545  
cb7b6ec2 Christian König 2017-08-15  1546       } else if (bo_va->cleared != 
clear) {
7fc11959 Christian König 2015-07-30  1547               
list_splice_init(&bo_va->valids, &bo_va->invalids);
3d7d4d3a Christian König 2017-08-23  1548       }
7fc11959 Christian König 2015-07-30  1549  
7fc11959 Christian König 2015-07-30  1550       list_for_each_entry(mapping, 
&bo_va->invalids, list) {
457e0fee Christian König 2017-08-22  1551               r = 
amdgpu_vm_bo_split_mapping(adev, exclusive, pages_addr, vm,
63e0ba40 Christian König 2016-08-16  1552                                       
       mapping, flags, nodes,
4e55eb38 Christian König 2017-09-11  1553                                       
       last_update);
d38ceaf9 Alex Deucher    2015-04-20  1554               if (r)
d38ceaf9 Alex Deucher    2015-04-20  1555                       return r;
d38ceaf9 Alex Deucher    2015-04-20  1556       }
d38ceaf9 Alex Deucher    2015-04-20  1557  
cb7b6ec2 Christian König 2017-08-15  1558       if (vm->use_cpu_for_update) {
cb7b6ec2 Christian König 2017-08-15  1559               /* Flush HDP */
cb7b6ec2 Christian König 2017-08-15  1560               mb();
69882565 Christian König 2018-01-19  1561               
amdgpu_asic_flush_hdp(adev, NULL);
d6c10f6b Christian König 2015-09-28  1562       }
d6c10f6b Christian König 2015-09-28  1563  
d38ceaf9 Alex Deucher    2015-04-20  1564       spin_lock(&vm->status_lock);
7bcfcb82 Junwei Zhang    2018-04-19  1565       
list_del_init(&bo_va->base.vm_status);
eff5a054 Christian König 2018-03-19  1566  
eff5a054 Christian König 2018-03-19  1567       /* If the BO is not in its 
preferred location add it back to
eff5a054 Christian König 2018-03-19  1568        * the evicted list so that it 
gets validated again on the
eff5a054 Christian König 2018-03-19  1569        * next command submission.
eff5a054 Christian König 2018-03-19  1570        */
7bcfcb82 Junwei Zhang    2018-04-19 @1571       mem_type = bo->tbo.mem.mem_type;
                                                           ^^^^^^^^^^^^^^^^^^^^
7bcfcb82 Junwei Zhang    2018-04-19 @1572       if (bo && bo->tbo.resv == 
vm->root.base.bo->tbo.resv &&
                                                    ^^
This check doesn't make sense because we dereferenced it on the line
before.

7bcfcb82 Junwei Zhang    2018-04-19  1573           !(bo->preferred_domains & 
amdgpu_mem_type_to_domain(mem_type)))
eff5a054 Christian König 2018-03-19  1574               
list_add_tail(&bo_va->base.vm_status, &vm->evicted);
d38ceaf9 Alex Deucher    2015-04-20  1575       spin_unlock(&vm->status_lock);
d38ceaf9 Alex Deucher    2015-04-20  1576  
cb7b6ec2 Christian König 2017-08-15  1577       
list_splice_init(&bo_va->invalids, &bo_va->valids);
cb7b6ec2 Christian König 2017-08-15  1578       bo_va->cleared = clear;
cb7b6ec2 Christian König 2017-08-15  1579  
cb7b6ec2 Christian König 2017-08-15  1580       if 
(trace_amdgpu_vm_bo_mapping_enabled()) {
cb7b6ec2 Christian König 2017-08-15  1581               
list_for_each_entry(mapping, &bo_va->valids, list)
cb7b6ec2 Christian König 2017-08-15  1582                       
trace_amdgpu_vm_bo_mapping(mapping);
68c62306 Christian König 2017-07-11  1583       }
68c62306 Christian König 2017-07-11  1584  
d38ceaf9 Alex Deucher    2015-04-20  1585       return 0;
d38ceaf9 Alex Deucher    2015-04-20  1586  }
d38ceaf9 Alex Deucher    2015-04-20  1587  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to