diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 364db7c45c67..5fab5b25b935 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -241,19 +241,27 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring, | |||
241 | * amdgpu_vm_flush - hardware flush the vm | 241 | * amdgpu_vm_flush - hardware flush the vm |
242 | * | 242 | * |
243 | * @ring: ring to use for flush | 243 | * @ring: ring to use for flush |
244 | * @vmid: vmid number to use | 244 | * @vm_id: vmid number to use |
245 | * @pd_addr: address of the page directory | 245 | * @pd_addr: address of the page directory |
246 | * | 246 | * |
247 | * Emit a VM flush when it is necessary. | 247 | * Emit a VM flush when it is necessary. |
248 | */ | 248 | */ |
249 | void amdgpu_vm_flush(struct amdgpu_ring *ring, | 249 | void amdgpu_vm_flush(struct amdgpu_ring *ring, |
250 | unsigned vmid, | 250 | unsigned vm_id, uint64_t pd_addr, |
251 | uint64_t pd_addr) | 251 | uint32_t gds_base, uint32_t gds_size, |
252 | uint32_t gws_base, uint32_t gws_size, | ||
253 | uint32_t oa_base, uint32_t oa_size) | ||
252 | { | 254 | { |
253 | if (pd_addr != AMDGPU_VM_NO_FLUSH) { | 255 | if (pd_addr != AMDGPU_VM_NO_FLUSH) { |
254 | trace_amdgpu_vm_flush(pd_addr, ring->idx, vmid); | 256 | trace_amdgpu_vm_flush(pd_addr, ring->idx, vm_id); |
255 | amdgpu_ring_emit_vm_flush(ring, vmid, pd_addr); | 257 | amdgpu_ring_emit_vm_flush(ring, vm_id, pd_addr); |
256 | } | 258 | } |
259 | |||
260 | if (ring->funcs->emit_gds_switch) | ||
261 | amdgpu_ring_emit_gds_switch(ring, vm_id, | ||
262 | gds_base, gds_size, | ||
263 | gws_base, gws_size, | ||
264 | oa_base, oa_size); | ||
257 | } | 265 | } |
258 | 266 | ||
259 | /** | 267 | /** |