Message ID | 20190725011003.30837-3-robh@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | drm/panfrost: Add heap and no execute buffer allocation | expand |
On 25/07/2019 02:09, Rob Herring wrote: > If a driver does its own management of pages, the shmem helper object's > pages array could be allocated when a SG table is not. There's not > really any good reason to tie putting pages with having a SG table when > freeing the object, so just put pages if the pages array is populated. > > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <maxime.ripard@bootlin.com> > Cc: Sean Paul <sean@poorly.run> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> > Cc: Eric Anholt <eric@anholt.net> > Signed-off-by: Rob Herring <robh@kernel.org> LGTM: Reviewed-by: Steven Price <steven.price@arm.com> > --- > v2: > - new patch > > drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 2f64667ac805..477e4cc50f7a 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -118,11 +118,11 @@ void drm_gem_shmem_free_object(struct drm_gem_object *obj) > if (shmem->sgt) { > dma_unmap_sg(obj->dev->dev, shmem->sgt->sgl, > shmem->sgt->nents, DMA_BIDIRECTIONAL); > - > - drm_gem_shmem_put_pages(shmem); > sg_free_table(shmem->sgt); > kfree(shmem->sgt); > } > + if (shmem->pages) > + drm_gem_shmem_put_pages(shmem); > } > > WARN_ON(shmem->pages_use_count); > -- > 2.20.1 > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel >
diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 2f64667ac805..477e4cc50f7a 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -118,11 +118,11 @@ void drm_gem_shmem_free_object(struct drm_gem_object *obj) if (shmem->sgt) { dma_unmap_sg(obj->dev->dev, shmem->sgt->sgl, shmem->sgt->nents, DMA_BIDIRECTIONAL); - - drm_gem_shmem_put_pages(shmem); sg_free_table(shmem->sgt); kfree(shmem->sgt); } + if (shmem->pages) + drm_gem_shmem_put_pages(shmem); } WARN_ON(shmem->pages_use_count);
If a driver does its own management of pages, the shmem helper object's pages array could be allocated when a SG table is not. There's not really any good reason to tie putting pages with having a SG table when freeing the object, so just put pages if the pages array is populated. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Eric Anholt <eric@anholt.net> Signed-off-by: Rob Herring <robh@kernel.org> --- v2: - new patch drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.20.1