[AMD Official Use Only]


> -----Original Message-----
> From: amd-gfx <amd-gfx-boun...@lists.freedesktop.org> On Behalf Of Alex
> Deucher
> Sent: Saturday, January 22, 2022 4:22 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander <alexander.deuc...@amd.com>
> Subject: [PATCH 4/5] drm/amdgpu: handle BACO synchronization with
> secondary funcs
> 
> Extend secondary function handling for runtime pm beyond audio
> to USB and UCSI.
> 
> Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 30 +++++++++++++++------
> ----
>  1 file changed, 18 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 89c3578bc818..119a5798623e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -1968,19 +1968,25 @@ static bool
> amdgpu_is_fw_framebuffer(resource_size_t base,
>       return found;
>  }
> 
> -static void amdgpu_get_audio_func(struct amdgpu_device *adev)
> +static void amdgpu_get_secondary_funcs(struct amdgpu_device *adev)
>  {
>       struct pci_dev *p = NULL;
> +     int i;
> 
> -     p = pci_get_domain_bus_and_slot(pci_domain_nr(adev->pdev-
> >bus),
> -                     adev->pdev->bus->number, 1);
> -     if (p) {
> -             pm_runtime_get_sync(&p->dev);
> -
> -             pm_runtime_mark_last_busy(&p->dev);
> -             pm_runtime_put_autosuspend(&p->dev);
> -
> -             pci_dev_put(p);
> +     /* 0 - GPU
> +      * 1 - audio
> +      * 2 - USB
> +      * 3 - UCSI
> +      */
> +     for (i = 1; i < 4; i++) {
> +             p = pci_get_domain_bus_and_slot(pci_domain_nr(adev-
> >pdev->bus),
> +                                             adev->pdev->bus->number,
> i);
> +             if (p) {
> +                     pm_runtime_get_sync(&p->dev);
> +                     pm_runtime_mark_last_busy(&p->dev);
> +                     pm_runtime_put_autosuspend(&p->dev);
> +                     pci_dev_put(p);
> +             }
>       }
>  }
[Quan, Evan] Although PMFW does not care the status of those functions except 
audio. Logically this seems more reasonable and should be harmless.
Patch 3 & 4 are reviewed-by: Evan Quan <evan.q...@amd.com>
Patch 1, 2, 5 are acked-by: Evan Quan <evan.q...@amd.com>
> 
> @@ -2148,14 +2154,14 @@ static int amdgpu_pci_probe(struct pci_dev
> *pdev,
>                * be no PMFW-aware D-state transition(D0->D3) on runpm
>                * suspend. Thus the BACO will be not correctly kicked in.
>                *
> -              * Via amdgpu_get_audio_func(), the audio dev is put
> +              * Via amdgpu_get_secondary_funcs(), the audio dev is put
>                * into D0 state. Then there will be a PMFW-aware D-state
>                * transition(D0->D3) on runpm suspend.
>                */
>               if (amdgpu_device_supports_baco(ddev) &&
>                   !(adev->flags & AMD_IS_APU) &&
>                   (adev->asic_type >= CHIP_NAVI10))
> -                     amdgpu_get_audio_func(adev);
> +                     amdgpu_get_secondary_funcs(adev);
>       }
> 
>       return 0;
> --
> 2.34.1

Reply via email to