[PATCH 2/3] drm/amdgpu/pm_runtime: update usage count in fence handling

Zeng, Oak Oak.Zeng at amd.com
Mon Dec 16 20:30:23 UTC 2019


[AMD Official Use Only - Internal Distribution Only]



Regards,
Oak

-----Original Message-----
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Christian König
Sent: Monday, December 16, 2019 3:25 PM
To: Alex Deucher <alexdeucher at gmail.com>; Koenig, Christian <Christian.Koenig at amd.com>
Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; amd-gfx list <amd-gfx at lists.freedesktop.org>
Subject: Re: [PATCH 2/3] drm/amdgpu/pm_runtime: update usage count in fence handling

Am 16.12.19 um 21:22 schrieb Alex Deucher:
> On Mon, Dec 16, 2019 at 3:19 PM Christian König 
> <ckoenig.leichtzumerken at gmail.com> wrote:
>> Am 16.12.19 um 18:18 schrieb Alex Deucher:
>>> Increment the usage count in emit fence, and decrement in process 
>>> fence to make sure the GPU is always considered in use while there 
>>> are fences outstanding.  We always wait for the engines to drain in 
>>> runtime suspend, but in practice that only covers short lived jobs 
>>> for gfx.  This should cover us for longer lived fences.
>>>
>>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 6 +++++-
>>>    1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>>> index 377fe20bce23..e9efee04ca23 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>>> @@ -34,6 +34,7 @@
>>>    #include <linux/kref.h>
>>>    #include <linux/slab.h>
>>>    #include <linux/firmware.h>
>>> +#include <linux/pm_runtime.h>
>>>
>>>    #include <drm/drm_debugfs.h>
>>>
>>> @@ -154,7 +155,7 @@ int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f,
>>>                       seq);
>>>        amdgpu_ring_emit_fence(ring, ring->fence_drv.gpu_addr,
>>>                               seq, flags | AMDGPU_FENCE_FLAG_INT);
>>> -
>>> +     pm_runtime_get_noresume(adev->ddev->dev);
>>>        ptr = &ring->fence_drv.fences[seq & ring->fence_drv.num_fences_mask];
>>>        if (unlikely(rcu_dereference_protected(*ptr, 1))) {
>>>                struct dma_fence *old; @@ -234,6 +235,7 @@ static 
>>> void amdgpu_fence_schedule_fallback(struct amdgpu_ring *ring)
>>>    bool amdgpu_fence_process(struct amdgpu_ring *ring)
>>>    {
>>>        struct amdgpu_fence_driver *drv = &ring->fence_drv;
>>> +     struct amdgpu_device *adev = ring->adev;
>>>        uint32_t seq, last_seq;
>>>        int r;
>>>
>>> @@ -274,6 +276,8 @@ bool amdgpu_fence_process(struct amdgpu_ring *ring)
>>>                        BUG();
>>>
>>>                dma_fence_put(fence);
>>> +             pm_runtime_mark_last_busy(adev->ddev->dev);
>>> +             pm_runtime_put_autosuspend(adev->ddev->dev);
>> Are you sure this is ok? Keep in mind that this function is called in 
>> interrupt context.
> According to:
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.
> kernel.org%2Fdoc%2FDocumentation%2Fpower%2Fruntime_pm.txt&data=02%
> 7C01%7Coak.zeng%40amd.com%7C7008cf5373094160552b08d78266032d%7C3dd8961
> fe4884e608e11a82d994e183d%7C0%7C0%7C637121247082078997&sdata=kfUKc
> dw0PSXWspOBfXQT6BF4r4q3m64cPMbkX7xjOaA%3D&reserved=0
> it's ok to call those in an interrupt context.

In this case the patch is Reviewed-by: Christian König <christian.koenig at amd.com>.

[Oak] Yes, pm_runtime_put_autosuspend calls __pm_runtime_suspend in the rpmflags set to RPM_ASYNC flag so it can be called in atomic context.

Christian.

>
> Alex
>
>> Christian.
>>
>>>        } while (last_seq != seq);
>>>
>>>        return true;
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Coa
> k.zeng%40amd.com%7C7008cf5373094160552b08d78266032d%7C3dd8961fe4884e60
> 8e11a82d994e183d%7C0%7C0%7C637121247082078997&sdata=OIeDvbaRaR4lMJ
> 1munKIMkhGwQpSqxroNhIPJGmqx6c%3D&reserved=0

_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Coak.zeng%40amd.com%7C7008cf5373094160552b08d78266032d%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637121247082078997&sdata=OIeDvbaRaR4lMJ1munKIMkhGwQpSqxroNhIPJGmqx6c%3D&reserved=0


More information about the amd-gfx mailing list