aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
diff options
context:
space:
mode:
authorShaoyun Liu <Shaoyun.Liu@amd.com>2017-04-28 17:18:26 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-05-24 17:40:12 -0400
commitcdf6adb28f79e728389b2e1a5e524504ce710eb6 (patch)
treed484f159d7673b510fed348365593680f3311cd4 /drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
parentb98b8dbc39d59a06b2104cfafed71ce465573e8e (diff)
drm/amdgpu: Move kiq ring lock out of virt structure
The usage of kiq should not depend on the virtualization. Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com> Reviewed-by:Andres Rodriquez <andresx7@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
index bd422f04f2ce..61fcf264c247 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
@@ -108,7 +108,6 @@ void amdgpu_virt_init_setting(struct amdgpu_device *adev)
108 adev->cg_flags = 0; 108 adev->cg_flags = 0;
109 adev->pg_flags = 0; 109 adev->pg_flags = 0;
110 110
111 mutex_init(&adev->virt.lock_kiq);
112 mutex_init(&adev->virt.lock_reset); 111 mutex_init(&adev->virt.lock_reset);
113} 112}
114 113
@@ -122,12 +121,12 @@ uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg)
122 121
123 BUG_ON(!ring->funcs->emit_rreg); 122 BUG_ON(!ring->funcs->emit_rreg);
124 123
125 mutex_lock(&adev->virt.lock_kiq); 124 mutex_lock(&kiq->ring_mutex);
126 amdgpu_ring_alloc(ring, 32); 125 amdgpu_ring_alloc(ring, 32);
127 amdgpu_ring_emit_rreg(ring, reg); 126 amdgpu_ring_emit_rreg(ring, reg);
128 amdgpu_fence_emit(ring, &f); 127 amdgpu_fence_emit(ring, &f);
129 amdgpu_ring_commit(ring); 128 amdgpu_ring_commit(ring);
130 mutex_unlock(&adev->virt.lock_kiq); 129 mutex_unlock(&kiq->ring_mutex);
131 130
132 r = dma_fence_wait(f, false); 131 r = dma_fence_wait(f, false);
133 if (r) 132 if (r)
@@ -148,12 +147,12 @@ void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v)
148 147
149 BUG_ON(!ring->funcs->emit_wreg); 148 BUG_ON(!ring->funcs->emit_wreg);
150 149
151 mutex_lock(&adev->virt.lock_kiq); 150 mutex_lock(&kiq->ring_mutex);
152 amdgpu_ring_alloc(ring, 32); 151 amdgpu_ring_alloc(ring, 32);
153 amdgpu_ring_emit_wreg(ring, reg, v); 152 amdgpu_ring_emit_wreg(ring, reg, v);
154 amdgpu_fence_emit(ring, &f); 153 amdgpu_fence_emit(ring, &f);
155 amdgpu_ring_commit(ring); 154 amdgpu_ring_commit(ring);
156 mutex_unlock(&adev->virt.lock_kiq); 155 mutex_unlock(&kiq->ring_mutex);
157 156
158 r = dma_fence_wait(f, false); 157 r = dma_fence_wait(f, false);
159 if (r) 158 if (r)