diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 04b7aaf770e4..cf03f9f01f40 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -822,13 +822,14 @@ static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, | |||
822 | 822 | ||
823 | /* Only for UVD/VCE VM emulation */ | 823 | /* Only for UVD/VCE VM emulation */ |
824 | if (ring->funcs->parse_cs) { | 824 | if (ring->funcs->parse_cs) { |
825 | p->job->vm = NULL; | ||
826 | for (i = 0; i < p->job->num_ibs; i++) { | 825 | for (i = 0; i < p->job->num_ibs; i++) { |
827 | r = amdgpu_ring_parse_cs(ring, p, i); | 826 | r = amdgpu_ring_parse_cs(ring, p, i); |
828 | if (r) | 827 | if (r) |
829 | return r; | 828 | return r; |
830 | } | 829 | } |
831 | } else { | 830 | } |
831 | |||
832 | if (p->job->vm) { | ||
832 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); | 833 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); |
833 | 834 | ||
834 | r = amdgpu_bo_vm_update_pte(p, vm); | 835 | r = amdgpu_bo_vm_update_pte(p, vm); |
@@ -917,7 +918,7 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev, | |||
917 | offset = ((uint64_t)m->it.start) * AMDGPU_GPU_PAGE_SIZE; | 918 | offset = ((uint64_t)m->it.start) * AMDGPU_GPU_PAGE_SIZE; |
918 | kptr += chunk_ib->va_start - offset; | 919 | kptr += chunk_ib->va_start - offset; |
919 | 920 | ||
920 | r = amdgpu_ib_get(adev, NULL, chunk_ib->ib_bytes, ib); | 921 | r = amdgpu_ib_get(adev, vm, chunk_ib->ib_bytes, ib); |
921 | if (r) { | 922 | if (r) { |
922 | DRM_ERROR("Failed to get ib !\n"); | 923 | DRM_ERROR("Failed to get ib !\n"); |
923 | return r; | 924 | return r; |
@@ -932,9 +933,9 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev, | |||
932 | return r; | 933 | return r; |
933 | } | 934 | } |
934 | 935 | ||
935 | ib->gpu_addr = chunk_ib->va_start; | ||
936 | } | 936 | } |
937 | 937 | ||
938 | ib->gpu_addr = chunk_ib->va_start; | ||
938 | ib->length_dw = chunk_ib->ib_bytes / 4; | 939 | ib->length_dw = chunk_ib->ib_bytes / 4; |
939 | ib->flags = chunk_ib->flags; | 940 | ib->flags = chunk_ib->flags; |
940 | j++; | 941 | j++; |