On Fri, Dec 4, 2020 at 3:41 PM Alex Deucher <alexdeucher@xxxxxxxxx> wrote: > > And drop it when we detach. If the shared buffer is in vram, > we need to make sure we don't put the device into runtime > suspend. > > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> Ping? Any thoughts on this? We really only need this for p2p since device memory in involved, but I'm not sure of the best way to handle that. Alex > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > index 5b465ab774d1..f63f182f37f9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > @@ -40,6 +40,7 @@ > #include <linux/dma-buf.h> > #include <linux/dma-fence-array.h> > #include <linux/pci-p2pdma.h> > +#include <linux/pm_runtime.h> > > /** > * amdgpu_gem_prime_vmap - &dma_buf_ops.vmap implementation > @@ -187,9 +188,13 @@ static int amdgpu_dma_buf_attach(struct dma_buf *dmabuf, > if (attach->dev->driver == adev->dev->driver) > return 0; > > + r = pm_runtime_get_sync(adev_to_drm(adev)->dev); > + if (r < 0) > + goto out; > + > r = amdgpu_bo_reserve(bo, false); > if (unlikely(r != 0)) > - return r; > + goto out; > > /* > * We only create shared fences for internal use, but importers > @@ -201,11 +206,15 @@ static int amdgpu_dma_buf_attach(struct dma_buf *dmabuf, > */ > r = __dma_resv_make_exclusive(bo->tbo.base.resv); > if (r) > - return r; > + goto out; > > bo->prime_shared_count++; > amdgpu_bo_unreserve(bo); > return 0; > + > +out: > + pm_runtime_put_autosuspend(adev_to_drm(adev)->dev); > + return r; > } > > /** > @@ -225,6 +234,9 @@ static void amdgpu_dma_buf_detach(struct dma_buf *dmabuf, > > if (attach->dev->driver != adev->dev->driver && bo->prime_shared_count) > bo->prime_shared_count--; > + > + pm_runtime_mark_last_busy(adev_to_drm(adev)->dev); > + pm_runtime_put_autosuspend(adev_to_drm(adev)->dev); > } > > /** > -- > 2.25.4 > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx