summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
authorEmily Deng <Emily.Deng@amd.com>2017-12-29 13:13:08 +0800
committerAlex Deucher <alexander.deucher@amd.com>2017-12-30 22:24:20 -0500
commit104bd2ca1124dfd9aa904d5f5a96253ef2b580f6 (patch)
tree06d9f0e326f8952aec540e8c6e27dda9fa3c957d /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
parentdc947770cf3400dd07ed2e2b7b9acb4f96d5137f (diff)
downloadop-kernel-dev-104bd2ca1124dfd9aa904d5f5a96253ef2b580f6.zip
op-kernel-dev-104bd2ca1124dfd9aa904d5f5a96253ef2b580f6.tar.gz
drm/amdgpu: Correct the IB size of bo update mapping.
The amdgpu_vm_frag_ptes will call amdgpu_vm_update_ptes, and for buffer object that has shadow buffer, need twice commands. Signed-off-by: Emily Deng <Emily.Deng@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index e623109..d451080 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1200,13 +1200,19 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
*
* The second command is for the shadow pagetables.
*/
- ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1) * 2;
+ if (vm->root.base.bo->shadow)
+ ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1) * 2;
+ else
+ ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1);
/* padding, etc. */
ndw = 64;
/* one PDE write for each huge page */
- ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6;
+ if (vm->root.base.bo->shadow)
+ ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6 * 2;
+ else
+ ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6;
if (pages_addr) {
/* copy commands needed */
OpenPOWER on IntegriCloud