[radeon-alex:amd-mainline-dkms-4.15 1135/1759] drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1422 amdgpu_vm_bo_split_mapping() warn: if statement not indented

Dan Carpenter dan.carpenter at oracle.com
Thu Apr 26 06:47:08 UTC 2018


tree:   git://people.freedesktop.org/~agd5f/linux.git amd-mainline-dkms-4.15
head:   9556f93f18f7923978fb90f860c107fed9ca7f57
commit: c756d628b20a12f50c43df1cfbe24fd72b5a47b4 [1135/1759] drm/amd/amdgpu: adapt dgma to the new vam_mgr

smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1422 amdgpu_vm_bo_split_mapping() warn: if statement not indented

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

d38ceaf9 Alex Deucher    2015-04-20  1344  
d38ceaf9 Alex Deucher    2015-04-20  1345  /**
a14faa65 Christian König 2016-01-25  1346   * amdgpu_vm_bo_split_mapping - split a mapping into smaller chunks
a14faa65 Christian König 2016-01-25  1347   *
a14faa65 Christian König 2016-01-25  1348   * @adev: amdgpu_device pointer
3cabaa54 Christian König 2016-06-06  1349   * @exclusive: fence we need to sync to
8358dcee Christian König 2016-03-30  1350   * @pages_addr: DMA addresses to use for mapping
a14faa65 Christian König 2016-01-25  1351   * @vm: requested vm
a14faa65 Christian König 2016-01-25  1352   * @mapping: mapped range and flags to use for the update
8358dcee Christian König 2016-03-30  1353   * @flags: HW flags for the mapping
c756d628 Flora Cui       2016-10-10  1354   * @mem: ttm_mem_reg holding array of drm_mm_nodes with the MC addresses
a14faa65 Christian König 2016-01-25  1355   * @fence: optional resulting fence
a14faa65 Christian König 2016-01-25  1356   *
a14faa65 Christian König 2016-01-25  1357   * Split the mapping into smaller chunks so that each update fits
a14faa65 Christian König 2016-01-25  1358   * into a SDMA IB.
a14faa65 Christian König 2016-01-25  1359   * Returns 0 for success, -EINVAL for failure.
a14faa65 Christian König 2016-01-25  1360   */
a14faa65 Christian König 2016-01-25  1361  static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev,
f54d1867 Chris Wilson    2016-10-25  1362  				      struct dma_fence *exclusive,
8358dcee Christian König 2016-03-30  1363  				      dma_addr_t *pages_addr,
a14faa65 Christian König 2016-01-25  1364  				      struct amdgpu_vm *vm,
a14faa65 Christian König 2016-01-25  1365  				      struct amdgpu_bo_va_mapping *mapping,
6b777607 Chunming Zhou   2016-09-21  1366  				      uint64_t flags,
c756d628 Flora Cui       2016-10-10  1367  				      struct ttm_mem_reg *mem,
f54d1867 Chris Wilson    2016-10-25  1368  				      struct dma_fence **fence)
a14faa65 Christian König 2016-01-25  1369  {
c756d628 Flora Cui       2016-10-10  1370  	struct drm_mm_node *nodes = mem ? mem->mm_node : NULL;
9fc8fc70 Christian König 2017-09-18  1371  	unsigned min_linear_pages = 1 << adev->vm_manager.fragment_size;
570144c6 Christian König 2017-08-30  1372  	uint64_t pfn, start = mapping->start;
a14faa65 Christian König 2016-01-25  1373  	int r;
a14faa65 Christian König 2016-01-25  1374  
a14faa65 Christian König 2016-01-25  1375  	/* normally,bo_va->flags only contians READABLE and WIRTEABLE bit go here
a14faa65 Christian König 2016-01-25  1376  	 * but in case of something, we filter the flags in first place
a14faa65 Christian König 2016-01-25  1377  	 */
a14faa65 Christian König 2016-01-25  1378  	if (!(mapping->flags & AMDGPU_PTE_READABLE))
a14faa65 Christian König 2016-01-25  1379  		flags &= ~AMDGPU_PTE_READABLE;
a14faa65 Christian König 2016-01-25  1380  	if (!(mapping->flags & AMDGPU_PTE_WRITEABLE))
a14faa65 Christian König 2016-01-25  1381  		flags &= ~AMDGPU_PTE_WRITEABLE;
a14faa65 Christian König 2016-01-25  1382  
15b31c59 Alex Xie        2017-03-03  1383  	flags &= ~AMDGPU_PTE_EXECUTABLE;
15b31c59 Alex Xie        2017-03-03  1384  	flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
15b31c59 Alex Xie        2017-03-03  1385  
b0fd18b0 Alex Xie        2017-03-03  1386  	flags &= ~AMDGPU_PTE_MTYPE_MASK;
b0fd18b0 Alex Xie        2017-03-03  1387  	flags |= (mapping->flags & AMDGPU_PTE_MTYPE_MASK);
b0fd18b0 Alex Xie        2017-03-03  1388  
d0766e98 Zhang, Jerry    2017-04-19  1389  	if ((mapping->flags & AMDGPU_PTE_PRT) &&
d0766e98 Zhang, Jerry    2017-04-19  1390  	    (adev->asic_type >= CHIP_VEGA10)) {
d0766e98 Zhang, Jerry    2017-04-19  1391  		flags |= AMDGPU_PTE_PRT;
d0766e98 Zhang, Jerry    2017-04-19  1392  		flags &= ~AMDGPU_PTE_VALID;
d0766e98 Zhang, Jerry    2017-04-19  1393  	}
d0766e98 Zhang, Jerry    2017-04-19  1394  
a14faa65 Christian König 2016-01-25  1395  	trace_amdgpu_vm_bo_update(mapping);
a14faa65 Christian König 2016-01-25  1396  
63e0ba40 Christian König 2016-08-16  1397  	pfn = mapping->offset >> PAGE_SHIFT;
63e0ba40 Christian König 2016-08-16  1398  	if (nodes) {
63e0ba40 Christian König 2016-08-16  1399  		while (pfn >= nodes->size) {
63e0ba40 Christian König 2016-08-16  1400  			pfn -= nodes->size;
63e0ba40 Christian König 2016-08-16  1401  			++nodes;
63e0ba40 Christian König 2016-08-16  1402  		}
63e0ba40 Christian König 2016-08-16  1403  	}
63e0ba40 Christian König 2016-08-16  1404  
63e0ba40 Christian König 2016-08-16  1405  	do {
9fc8fc70 Christian König 2017-09-18  1406  		dma_addr_t *dma_addr = NULL;
63e0ba40 Christian König 2016-08-16  1407  		uint64_t max_entries;
63e0ba40 Christian König 2016-08-16  1408  		uint64_t addr, last;
c756d628 Flora Cui       2016-10-10  1409  		uint64_t count;
63e0ba40 Christian König 2016-08-16  1410  
63e0ba40 Christian König 2016-08-16  1411  		if (nodes) {
63e0ba40 Christian König 2016-08-16  1412  			addr = nodes->start << PAGE_SHIFT;
63e0ba40 Christian König 2016-08-16  1413  			max_entries = (nodes->size - pfn) *
63e0ba40 Christian König 2016-08-16  1414  				(PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE);
c756d628 Flora Cui       2016-10-10  1415  			switch (mem->mem_type) {
c756d628 Flora Cui       2016-10-10  1416  			case TTM_PL_TT:
63e0ba40 Christian König 2016-08-16  1417  				max_entries = min(max_entries, 16ull * 1024ull);
c756d628 Flora Cui       2016-10-10  1418  
9fc8fc70 Christian König 2017-09-18  1419  				for (count = 1; count < max_entries; ++count) {
9fc8fc70 Christian König 2017-09-18  1420  					uint64_t idx = pfn + count;
9fc8fc70 Christian König 2017-09-18  1421  
9fc8fc70 Christian König 2017-09-18 @1422  					if (pages_addr[idx] !=
9fc8fc70 Christian König 2017-09-18  1423  					    (pages_addr[idx - 1] + PAGE_SIZE))
9fc8fc70 Christian König 2017-09-18  1424  					break;
                                                                                ^^^^^^
9fc8fc70 Christian König 2017-09-18  1425  				}
9fc8fc70 Christian König 2017-09-18  1426  
9fc8fc70 Christian König 2017-09-18  1427  				if (count < min_linear_pages) {
9fc8fc70 Christian König 2017-09-18  1428  					addr = pfn << PAGE_SHIFT;
9fc8fc70 Christian König 2017-09-18  1429  					dma_addr = pages_addr;
9fc8fc70 Christian König 2017-09-18  1430  				} else {
9fc8fc70 Christian König 2017-09-18  1431  					addr = pages_addr[pfn];
9fc8fc70 Christian König 2017-09-18  1432  					max_entries = count;
9fc8fc70 Christian König 2017-09-18  1433  				}
c756d628 Flora Cui       2016-10-10  1434  				break;
c756d628 Flora Cui       2016-10-10  1435  			case AMDGPU_PL_DGMA_IMPORT:
c756d628 Flora Cui       2016-10-10  1436  				addr = 0;
c756d628 Flora Cui       2016-10-10  1437  				max_entries = min(max_entries, 16ull * 1024ull);
c756d628 Flora Cui       2016-10-10  1438  				dma_addr = pages_addr;
c756d628 Flora Cui       2016-10-10  1439  				break;
c756d628 Flora Cui       2016-10-10  1440  			case AMDGPU_PL_DGMA:
c756d628 Flora Cui       2016-10-10  1441  				addr += adev->vm_manager.vram_base_offset +
c756d628 Flora Cui       2016-10-10  1442  					adev->mman.bdev.man[mem->mem_type].gpu_offset -
c756d628 Flora Cui       2016-10-10  1443  					adev->mman.bdev.man[TTM_PL_VRAM].gpu_offset;
c756d628 Flora Cui       2016-10-10  1444  				addr += pfn << PAGE_SHIFT;
c756d628 Flora Cui       2016-10-10  1445  				break;
c756d628 Flora Cui       2016-10-10  1446  			case TTM_PL_VRAM:
63e0ba40 Christian König 2016-08-16  1447  				addr += adev->vm_manager.vram_base_offset;
63e0ba40 Christian König 2016-08-16  1448  				addr += pfn << PAGE_SHIFT;
c756d628 Flora Cui       2016-10-10  1449  				break;
c756d628 Flora Cui       2016-10-10  1450  			default:
c756d628 Flora Cui       2016-10-10  1451  				break;
c756d628 Flora Cui       2016-10-10  1452  			}
c756d628 Flora Cui       2016-10-10  1453  		} else {
c756d628 Flora Cui       2016-10-10  1454  			addr = 0;
c756d628 Flora Cui       2016-10-10  1455  			max_entries = S64_MAX;
9fc8fc70 Christian König 2017-09-18  1456  		}
a14faa65 Christian König 2016-01-25  1457  
a9f87f64 Christian König 2017-03-30  1458  		last = min((uint64_t)mapping->last, start + max_entries - 1);
9fc8fc70 Christian König 2017-09-18  1459  		r = amdgpu_vm_bo_update_mapping(adev, exclusive, dma_addr, vm,
a14faa65 Christian König 2016-01-25  1460  						start, last, flags, addr,
a14faa65 Christian König 2016-01-25  1461  						fence);
a14faa65 Christian König 2016-01-25  1462  		if (r)
a14faa65 Christian König 2016-01-25  1463  			return r;
a14faa65 Christian König 2016-01-25  1464  
63e0ba40 Christian König 2016-08-16  1465  		pfn += last - start + 1;
63e0ba40 Christian König 2016-08-16  1466  		if (nodes && nodes->size == pfn) {
63e0ba40 Christian König 2016-08-16  1467  			pfn = 0;
63e0ba40 Christian König 2016-08-16  1468  			++nodes;
a14faa65 Christian König 2016-01-25  1469  		}
63e0ba40 Christian König 2016-08-16  1470  		start = last + 1;
63e0ba40 Christian König 2016-08-16  1471  
a9f87f64 Christian König 2017-03-30  1472  	} while (unlikely(start != mapping->last + 1));
a14faa65 Christian König 2016-01-25  1473  
a14faa65 Christian König 2016-01-25  1474  	return 0;
a14faa65 Christian König 2016-01-25  1475  }
a14faa65 Christian König 2016-01-25  1476  

:::::: The code at line 1422 was first introduced by commit
:::::: 9fc8fc709b356c85034cbcb3b84c9d8b77865f52 drm/amdgpu: add VM support for huge pages v2

:::::: TO: Christian König <christian.koenig at amd.com>
:::::: CC: Alex Deucher <alexander.deucher at amd.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation


More information about the dri-devel mailing list