Commit 846de138 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu/userq: Optimize S0ix handling



In S0i3, GFX state is retained, so it's preferrable to
preempt queues rather than unmapping them as the overhead
is lower.

Reviewed-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Tested-by: default avatarDavid Perry <david.perry@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f05c03ff
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -977,6 +977,9 @@ int amdgpu_userq_suspend(struct amdgpu_device *adev)
		cancel_delayed_work_sync(&uqm->resume_work);
		mutex_lock(&uqm->userq_mutex);
		idr_for_each_entry(&uqm->userq_idr, queue, queue_id) {
			if (adev->in_s0ix)
				r = amdgpu_userq_preempt_helper(uqm, queue);
			else
				r = amdgpu_userq_unmap_helper(uqm, queue);
			if (r)
				ret = r;
@@ -1002,6 +1005,9 @@ int amdgpu_userq_resume(struct amdgpu_device *adev)
	list_for_each_entry_safe(uqm, tmp, &adev->userq_mgr_list, list) {
		mutex_lock(&uqm->userq_mutex);
		idr_for_each_entry(&uqm->userq_idr, queue, queue_id) {
			if (adev->in_s0ix)
				r = amdgpu_userq_restore_helper(uqm, queue);
			else
				r = amdgpu_userq_map_helper(uqm, queue);
			if (r)
				ret = r;