[PATCH] drm/amdgpu: Fix the runtime pm mode error

Ma, Jun majun at amd.com
Thu Mar 21 06:58:47 UTC 2024



On 3/20/2024 9:38 PM, Lazar, Lijo wrote:
> 
> 
> On 3/20/2024 6:54 PM, Alex Deucher wrote:
>> On Wed, Mar 20, 2024 at 6:17 AM Ma Jun <Jun.Ma2 at amd.com> wrote:
>>>
>>> Because of the logic error, Arcturus and vega20 currently
>>> use the AMDGPU_RUNPM_NONE for runtime pm even though they
>>> support BACO. So, the code is optimized to fix this error.
>>>
>>> Signed-off-by: Ma Jun <Jun.Ma2 at amd.com>
>>> ---
>>>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 56 ++++++++++++-------------
>>>  1 file changed, 27 insertions(+), 29 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> index 1f92fb1e7421..70cf2d0c7683 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> @@ -150,42 +150,40 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags)
>>>         }
>>>
>>>         adev->pm.rpm_mode = AMDGPU_RUNPM_NONE;
>>> -       if (amdgpu_device_supports_px(dev) &&
>>> -           (amdgpu_runtime_pm != 0)) { /* enable PX as runtime mode */
>>> -               adev->pm.rpm_mode = AMDGPU_RUNPM_PX;
>>> -               dev_info(adev->dev, "Using ATPX for runtime pm\n");
>>> -       } else if (amdgpu_device_supports_boco(dev) &&
>>> -                  (amdgpu_runtime_pm != 0)) { /* enable boco as runtime mode */
>>> -               adev->pm.rpm_mode = AMDGPU_RUNPM_BOCO;
>>> -               dev_info(adev->dev, "Using BOCO for runtime pm\n");
>>> -       } else if (amdgpu_device_supports_baco(dev) &&
>>> -                  (amdgpu_runtime_pm != 0)) {
>>> -               switch (adev->asic_type) {
>>> -               case CHIP_VEGA20:
>>> -               case CHIP_ARCTURUS:
>>> -                       /* enable BACO as runpm mode if runpm=1 */
>>> -                       if (amdgpu_runtime_pm > 0)
>>> -                               adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
>>> -                       break;
>>> -               case CHIP_VEGA10:
>>> -                       /* enable BACO as runpm mode if noretry=0 */
>>> -                       if (!adev->gmc.noretry)
>>> +       if (amdgpu_runtime_pm > 0) {
>>> +               adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
>>> +               dev_info(adev->dev, "Forcing BACO for runtime pm\n");
>>
>> Does this need special handling for BAMACO?  Setting
>> amdgpu_runtime_pm=2 is supposed to set BAMACO and 1 is supposed to
>> force BACO.
>>
> 
> Also, based on the comment it appears as if runpm is not intended to be
> enabled by default on Vega20/Arcturus (unless forced by module parameter).
> 
Function amdgpu_dpm_is_baco_supported() is called in soc15_supports_baco
to check if BACO is supported on Vega20 and Arcturus.

Regards,
Ma Jun
> Thanks,
> Lijo
> 
>> Alex
>>
>>> +       } else if (amdgpu_runtime_pm != 0) {
>>> +               if (amdgpu_device_supports_px(dev)) { /* enable PX as runtime mode */
>>> +                       adev->pm.rpm_mode = AMDGPU_RUNPM_PX;
>>> +                       dev_info(adev->dev, "Using ATPX for runtime pm\n");
>>> +               } else if (amdgpu_device_supports_boco(dev)) { /* enable boco as runtime mode */
>>> +                       adev->pm.rpm_mode = AMDGPU_RUNPM_BOCO;
>>> +                       dev_info(adev->dev, "Using BOCO for runtime pm\n");
>>> +               } else if (amdgpu_device_supports_baco(dev)) {
>>> +                       switch (adev->asic_type) {
>>> +                       case CHIP_VEGA10:
>>> +                               /* enable BACO as runpm mode if noretry=0 */
>>> +                               if (!adev->gmc.noretry)
>>> +                                       adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
>>> +                               break;
>>> +                       default:
>>> +                               /* enable BACO as runpm mode on CI+ */
>>>                                 adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
>>> -                       break;
>>> -               default:
>>> -                       /* enable BACO as runpm mode on CI+ */
>>> -                       adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
>>> -                       break;
>>> -               }
>>> +                               break;
>>> +                       }
>>>
>>> -               if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO)
>>> -                       dev_info(adev->dev, "Using BACO for runtime pm\n");
>>> +                       if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO)
>>> +                               dev_info(adev->dev, "Using BACO for runtime pm\n");
>>> +               }
>>>         }
>>>
>>> +       if (adev->pm.rpm_mode == AMDGPU_RUNPM_NONE)
>>> +               dev_info(adev->dev, "No PM mode for runtime pm\n");
>>> +
>>>         /* Call ACPI methods: require modeset init
>>>          * but failure is not fatal
>>>          */
>>> -
>>>         acpi_status = amdgpu_acpi_init(adev);
>>>         if (acpi_status)
>>>                 dev_dbg(dev->dev, "Error during ACPI methods call\n");
>>> --
>>> 2.34.1
>>>


More information about the amd-gfx mailing list