From: "Yadav, Arvind" <arvyadav@amd.com>
To: "Lazar, Lijo" <lijo.lazar@amd.com>,
Arvind Yadav <Arvind.Yadav@amd.com>,
Christian.Koenig@amd.com, alexander.deucher@amd.com,
shashank.sharma@amd.com, Xinhui.Pan@amd.com, airlied@gmail.com,
daniel@ffwll.ch, Felix.Kuehling@amd.com,
amd-gfx@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 4/7] drm/amdgpu: Add suspend function to clear the GPU power profile.
Date: Tue, 22 Aug 2023 18:26:57 +0530 [thread overview]
Message-ID: <4e88d913-ae0d-6746-a839-6525874afa5d@amd.com> (raw)
In-Reply-To: <aeca86ab-9c5b-4011-7622-1954df1b961d@amd.com>
On 8/22/2023 6:24 PM, Lazar, Lijo wrote:
>
>
> On 8/22/2023 5:52 PM, Yadav, Arvind wrote:
>>
>> On 8/22/2023 12:01 PM, Lazar, Lijo wrote:
>>>
>>>
>>> On 8/21/2023 12:17 PM, Arvind Yadav wrote:
>>>> This patch adds a suspend function that will clear the GPU
>>>> power profile before going into suspend state.
>>>>
>>>> v2:
>>>> - Add the new suspend function based on review comment.
>>>>
>>>> Cc: Shashank Sharma <shashank.sharma@amd.com>
>>>> Cc: Christian Koenig <christian.koenig@amd.com>
>>>> Cc: Alex Deucher <alexander.deucher@amd.com>
>>>> Signed-off-by: Arvind Yadav <Arvind.Yadav@amd.com>
>>>> ---
>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++
>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c | 23
>>>> +++++++++++++++++++
>>>> drivers/gpu/drm/amd/include/amdgpu_workload.h | 2 ++
>>>> 3 files changed, 27 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>> index cd3bf641b630..3b70e657b439 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>> @@ -4212,6 +4212,8 @@ int amdgpu_device_suspend(struct drm_device
>>>> *dev, bool fbcon)
>>>> amdgpu_ras_suspend(adev);
>>>> + amdgpu_workload_profile_suspend(adev);
>>>> +
>>>> amdgpu_device_ip_suspend_phase1(adev);
>>>> if (!adev->in_s0ix)
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c
>>>> index 6367eb88a44d..44ca8e986984 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c
>>>> @@ -174,6 +174,29 @@ void amdgpu_workload_profile_set(struct
>>>> amdgpu_device *adev,
>>>> mutex_unlock(&workload->workload_lock);
>>>> }
>>>> +void amdgpu_workload_profile_suspend(struct amdgpu_device *adev)
>>>> +{
>>>> + struct amdgpu_smu_workload *workload = &adev->smu_workload;
>>>> + int ret;
>>>> +
>>>> + mutex_lock(&workload->workload_lock);
>>>> + cancel_delayed_work_sync(&workload->smu_delayed_work);
>>>
>>> Another deadlock candidate. Between fini() and suspend(), the only
>>> difference probably could be initialization status. If so, just use
>>> a helper that is used during fini() and suspend().
>>>
>> Before going to suspend(), we need to cancel the work and clear all
>> the profiles but in fini() we are destroying the mutex. also it will
>> be called when we are unloading everything.
>>
>
> What I meant is for both suspend/fini, you need to cancel any work
> scheduled, clear refcounts and set the profile back to default
> profile. Keep this in a helper and reuse.
>
Noted.
Thank you,
~Arvind
> Thanks,
> Lijo
>
>> ~Arvind
>>
>>> Thanks,
>>> Lijo
>>>
>>>> +
>>>> + /* Clear all the set GPU power profile*/
>>>> + for (int index = fls(workload->submit_workload_status);
>>>> + index > 0; index--) {
>>>> + if (workload->submit_workload_status & (1 << index)) {
>>>> + atomic_set(&workload->power_profile_ref[index], 0);
>>>> + ret = amdgpu_power_profile_clear(adev, index);
>>>> + if (ret)
>>>> + DRM_WARN("Failed to clear power profile %s, err =
>>>> %d\n",
>>>> + amdgpu_workload_mode_name[index], ret);
>>>> + }
>>>> + }
>>>> + workload->submit_workload_status = 0;
>>>> + mutex_unlock(&workload->workload_lock);
>>>> +}
>>>> +
>>>> void amdgpu_workload_profile_init(struct amdgpu_device *adev)
>>>> {
>>>> adev->smu_workload.adev = adev;
>>>> diff --git a/drivers/gpu/drm/amd/include/amdgpu_workload.h
>>>> b/drivers/gpu/drm/amd/include/amdgpu_workload.h
>>>> index ee1f87257f2d..0acd8769ec52 100644
>>>> --- a/drivers/gpu/drm/amd/include/amdgpu_workload.h
>>>> +++ b/drivers/gpu/drm/amd/include/amdgpu_workload.h
>>>> @@ -52,6 +52,8 @@ void amdgpu_workload_profile_put(struct
>>>> amdgpu_device *adev,
>>>> void amdgpu_workload_profile_set(struct amdgpu_device *adev,
>>>> uint32_t ring_type);
>>>> +void amdgpu_workload_profile_suspend(struct amdgpu_device *adev);
>>>> +
>>>> void amdgpu_workload_profile_init(struct amdgpu_device *adev);
>>>> void amdgpu_workload_profile_fini(struct amdgpu_device *adev);
next prev parent reply other threads:[~2023-08-22 12:57 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-21 6:47 [PATCH v2 0/7] GPU workload hints for better performance Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 6:47 ` [PATCH v2 1/7] drm/amdgpu: Added init/fini functions for workload Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:06 ` Shashank Sharma
2023-08-21 13:06 ` Shashank Sharma
2023-08-21 13:35 ` Yadav, Arvind
2023-08-21 13:35 ` Yadav, Arvind
2023-08-21 13:54 ` Shashank Sharma
2023-08-21 13:54 ` Shashank Sharma
2023-08-21 14:12 ` Yadav, Arvind
2023-08-21 14:12 ` Yadav, Arvind
2023-08-21 14:27 ` Shashank Sharma
2023-08-21 14:27 ` Shashank Sharma
2023-08-21 6:47 ` [PATCH v2 2/7] drm/amdgpu: Add new function to set GPU power profile Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:10 ` Shashank Sharma
2023-08-21 13:10 ` Shashank Sharma
2023-08-21 16:22 ` Alex Deucher
2023-08-21 16:22 ` Alex Deucher
2023-08-21 16:22 ` Alex Deucher
2023-08-21 17:53 ` Yadav, Arvind
2023-08-21 17:53 ` Yadav, Arvind
2023-08-21 17:53 ` Yadav, Arvind
2023-08-21 18:10 ` Alex Deucher
2023-08-21 18:10 ` Alex Deucher
2023-08-21 18:10 ` Alex Deucher
2023-08-22 6:13 ` Yadav, Arvind
2023-08-22 6:13 ` Yadav, Arvind
2023-08-22 6:13 ` Yadav, Arvind
2023-08-21 18:06 ` Alex Deucher
2023-08-21 18:06 ` Alex Deucher
2023-08-21 18:06 ` Alex Deucher
2023-08-21 18:08 ` Yadav, Arvind
2023-08-21 18:08 ` Yadav, Arvind
2023-08-21 18:08 ` Yadav, Arvind
2023-08-22 6:25 ` Lazar, Lijo
2023-08-22 12:40 ` Yadav, Arvind
2023-08-21 6:47 ` [PATCH v2 3/7] drm/amdgpu: Add new function to put " Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:39 ` Shashank Sharma
2023-08-21 13:39 ` Shashank Sharma
2023-08-21 14:40 ` Yadav, Arvind
2023-08-21 14:40 ` Yadav, Arvind
2023-08-22 4:51 ` Lazar, Lijo
2023-08-22 12:11 ` Yadav, Arvind
2023-08-22 12:46 ` Lazar, Lijo
2023-08-25 11:18 ` Yadav, Arvind
2023-08-25 11:27 ` Lazar, Lijo
2023-08-21 6:47 ` [PATCH v2 4/7] drm/amdgpu: Add suspend function to clear the " Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:43 ` Shashank Sharma
2023-08-21 13:43 ` Shashank Sharma
2023-08-21 13:52 ` Yadav, Arvind
2023-08-21 13:52 ` Yadav, Arvind
2023-08-22 6:31 ` Lazar, Lijo
2023-08-22 12:22 ` Yadav, Arvind
2023-08-22 12:54 ` Lazar, Lijo
2023-08-22 12:56 ` Yadav, Arvind [this message]
2023-08-21 6:47 ` [PATCH v2 5/7] drm/amdgpu: Switch on/off GPU workload profile Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:46 ` Shashank Sharma
2023-08-21 13:46 ` Shashank Sharma
2023-08-21 13:53 ` Yadav, Arvind
2023-08-21 13:53 ` Yadav, Arvind
2023-08-21 6:47 ` [PATCH v2 6/7] drm/amdgpu: switch workload context to/from compute Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:47 ` Shashank Sharma
2023-08-21 13:47 ` Shashank Sharma
2023-08-21 6:47 ` [PATCH v2 7/7] Revert "drm/amd/amdgpu: switch on/off vcn power profile mode" Arvind Yadav
2023-08-21 6:47 ` Arvind Yadav
2023-08-21 13:49 ` Shashank Sharma
2023-08-21 13:49 ` Shashank Sharma
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4e88d913-ae0d-6746-a839-6525874afa5d@amd.com \
--to=arvyadav@amd.com \
--cc=Arvind.Yadav@amd.com \
--cc=Christian.Koenig@amd.com \
--cc=Felix.Kuehling@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=lijo.lazar@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=shashank.sharma@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.