[PATCH v2] drm/amdgpu: Poweroff uvd/vce/vcn/acp block if they were disabled by user

Christian König ckoenig.leichtzumerken at gmail.com
Tue Oct 16 19:10:41 UTC 2018


Am 16.10.2018 um 21:03 schrieb Zhu, Rex:
>
>> -----Original Message-----
>> From: Koenig, Christian
>> Sent: Wednesday, October 17, 2018 2:59 AM
>> To: Zhu, Rex <Rex.Zhu at amd.com>; amd-gfx at lists.freedesktop.org
>> Subject: Re: [PATCH v2] drm/amdgpu: Poweroff uvd/vce/vcn/acp block if
>> they were disabled by user
>>
>> Am 16.10.2018 um 20:54 schrieb Zhu, Rex:
>>>> -----Original Message-----
>>>> From: Christian König <ckoenig.leichtzumerken at gmail.com>
>>>> Sent: Wednesday, October 17, 2018 2:31 AM
>>>> To: Zhu, Rex <Rex.Zhu at amd.com>; amd-gfx at lists.freedesktop.org
>>>> Subject: Re: [PATCH v2] drm/amdgpu: Poweroff uvd/vce/vcn/acp block if
>>>> they were disabled by user
>>>>
>>>> Am 16.10.2018 um 20:25 schrieb Rex Zhu:
>>>>> If user disable uvd/vce/vcn/acp blocks via module parameter
>>>>> ip_block_mask, driver power off thoser blocks to save power.
>>>>>
>>>>> v2: power off uvd/vce/vcn/acp via smu.
>>>> I'm not sure if that is a good idea.
>>>>
>>>> The meaning of the flag is to NOT touch the blocks at all, e.g.
>>>> pretend they don't even exists.
>>>>
>>>> Additional to that the ip_block_mask is only for bringup and
>>>> debugging and not meant for production use and power saving shouldn't
>> be an issue there.
>>> Hi Christian,
>>>
>>> This is requested by Chrome project. As there is an S3 issue caused by VCE,
>> and they still don't find the root cause.
>>> And in Chrome project, they don't need to use vce engine.
>>> So as a workaround, they want to disable vce and power off the vce engine
>> to save power.
>>
>> Oh, please not that stupid idea again! In this case that is a clear NAK.
>>
>> The mask isn't necessary stable and this module parameter is absolutely NOT
>> intended for production use!
>>
>> If we want to disable a specific block permanently in a project we should do
>> so by adding a patch to the specific branch and NOT by abusing
>> ip_block_mask for it.
> This is also requested by Chrome project. Customer wish all the patches are cherry-pick from drm-next/linux kernel tree.
> Maybe we need to fix the vce issue on time.

Yeah, completely agree.

Exactly that's the kind of stuff why Chrome has the restriction to only 
cherry-pick patches from upstream.

So we can either go ahead and disable VCE upstream as well or we sit 
down and fix the issue.

Do you have a bug tracker for that?

Regards,
Christian.

>
> Best Regards
> Rex
>
>> Regards,
>> Christian.
>>
>>> Best Regards
>>> Rex
>>>
>>>> So I would rather say that this is a NAK.
>>>>
>>>> Christian.
>>>>
>>>>> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>>>>> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
>>>>> ---
>>>>>     drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 19
>>>> +++++++++++++++++++
>>>>>     1 file changed, 19 insertions(+)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>> index 6fe6ea9..ef9fe50 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>> @@ -1776,6 +1776,24 @@ static int amdgpu_device_set_pg_state(struct
>>>>> amdgpu_device *adev, enum amd_power
>>>>>
>>>>>     	for (j = 0; j < adev->num_ip_blocks; j++) {
>>>>>     		i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks
>>>> - j - 1;
>>>>> +
>>>>> +		/* try to power off VCE/UVD/VCN/ACP if they were disabled
>>>> by user */
>>>>> +		if ((adev->ip_blocks[i].version->type ==
>>>> AMD_IP_BLOCK_TYPE_UVD ||
>>>>> +		    adev->ip_blocks[i].version->type ==
>>>> AMD_IP_BLOCK_TYPE_VCE ||
>>>>> +		    adev->ip_blocks[i].version->type ==
>>>> AMD_IP_BLOCK_TYPE_VCN ||
>>>>> +		    adev->ip_blocks[i].version->type ==
>>>> AMD_IP_BLOCK_TYPE_ACP) &&
>>>>> +		    adev->powerplay.pp_funcs->set_powergating_by_smu) {
>>>>> +			if (!adev->ip_blocks[i].status.valid) {
>>>>> +
>>>> 	amdgpu_dpm_set_powergating_by_smu(adev, adev-
>>>>> ip_blocks[i].version->type, state == AMD_PG_STATE_GATE ?
>>>>> +
>>>> 					true : false);
>>>>> +				if (r) {
>>>>> +
>>>> 	DRM_ERROR("set_powergating_state(gate) of IP block <%s> failed
>>>> %d\n",
>>>>> +					  adev->ip_blocks[i].version->funcs-
>>>>> name, r);
>>>>> +					return r;
>>>>> +				}
>>>>> +			}
>>>>> +		}
>>>>> +
>>>>>     		if (!adev->ip_blocks[i].status.late_initialized)
>>>>>     			continue;
>>>>>     		/* skip CG for VCE/UVD, it's handled specially */ @@ -1793,6
>>>>> +1811,7 @@ static int amdgpu_device_set_pg_state(struct
>>>>> +amdgpu_device
>>>> *adev, enum amd_power
>>>>>     			}
>>>>>     		}
>>>>>     	}
>>>>> +
>>>>>     	return 0;
>>>>>     }
>>>>>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list