Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa1c8900 authored by Chunming Zhou's avatar Chunming Zhou Committed by Alex Deucher
Browse files

drm/amdgpu: recovery hw jobs when gpu reset V3



V3: directly use pd_addr.

Signed-off-by: default avatarChunming Zhou <David1.Zhou@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 192b7dcb
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1946,6 +1946,7 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
		if (!ring)
			continue;
		kthread_park(ring->sched.thread);
		amd_sched_hw_job_reset(&ring->sched);
	}
	/* after all hw jobs are reset, hw fence is meaningless, so force_completion */
	amdgpu_fence_driver_force_completion(adev);
@@ -1990,8 +1991,9 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
			struct amdgpu_ring *ring = adev->rings[i];
			if (!ring)
				continue;
			amd_sched_job_recovery(&ring->sched);
			kthread_unpark(ring->sched.thread);
			amdgpu_ring_restore(ring, ring_sizes[i], ring_data[i]);
			kfree(ring_data[i]);
			ring_sizes[i] = 0;
			ring_data[i] = NULL;
		}
+2 −1
Original line number Diff line number Diff line
@@ -385,7 +385,8 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job)
	    amdgpu_vm_ring_has_compute_vm_bug(ring)))
		amdgpu_ring_emit_pipeline_sync(ring);

	if (ring->funcs->emit_vm_flush && job->vm_needs_flush) {
	if (ring->funcs->emit_vm_flush && (job->vm_needs_flush ||
	    amdgpu_vm_is_gpu_reset(adev, id))) {
		struct fence *fence;

		trace_amdgpu_vm_flush(job->vm_pd_addr, ring->idx, job->vm_id);