diff options
author | Christian König <christian.koenig@amd.com> | 2016-06-22 08:25:55 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-07-07 15:02:00 -0400 |
commit | 9a79588c42bf89cff48fdc6db4aab4aeb9d862b6 (patch) | |
tree | 844b1a3d8bbca198d6077e0e158776d09aa490a3 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
parent | d5b4e25d8358ed65559dcbe1709cc46e755c22f6 (diff) |
drm/amdgpu: don't update page tables for VM emulation
It's just overhead to do so and allocating a VMID
when we don't need one is actually a bit dangerous.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index cf97a87f76a6..95b248159947 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -656,20 +656,21 @@ static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, | |||
656 | 656 | ||
657 | /* Only for UVD/VCE VM emulation */ | 657 | /* Only for UVD/VCE VM emulation */ |
658 | if (ring->funcs->parse_cs) { | 658 | if (ring->funcs->parse_cs) { |
659 | p->job->vm = NULL; | ||
659 | for (i = 0; i < p->job->num_ibs; i++) { | 660 | for (i = 0; i < p->job->num_ibs; i++) { |
660 | r = amdgpu_ring_parse_cs(ring, p, i); | 661 | r = amdgpu_ring_parse_cs(ring, p, i); |
661 | if (r) | 662 | if (r) |
662 | return r; | 663 | return r; |
663 | } | 664 | } |
664 | } | 665 | } else { |
665 | 666 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); | |
666 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); | ||
667 | 667 | ||
668 | r = amdgpu_bo_vm_update_pte(p, vm); | 668 | r = amdgpu_bo_vm_update_pte(p, vm); |
669 | if (!r) | 669 | if (r) |
670 | amdgpu_cs_sync_rings(p); | 670 | return r; |
671 | } | ||
671 | 672 | ||
672 | return r; | 673 | return amdgpu_cs_sync_rings(p); |
673 | } | 674 | } |
674 | 675 | ||
675 | static int amdgpu_cs_handle_lockup(struct amdgpu_device *adev, int r) | 676 | static int amdgpu_cs_handle_lockup(struct amdgpu_device *adev, int r) |