On Wed, Oct 04, 2017 at 03:08:39PM +0200, Boris Brezillon wrote: > drm_gem_cma_create() prints an error message when dma_alloc_wc() fails to > allocate the amount of memory we requested. This can lead to annoying > error messages when CMA is only one possible source of memory for the BO > allocation. > > Turn this error message into a debug one and add a __must_check specifier > to make sure all callers are checking the return value. > > Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> Assuming gcc doesn't spot any driver that now stumbles over the __must_check: Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> Would be good to get Laurent's ack too. -Daniel > --- > Hello, > > This problem happens with the VC4 driver which can flush its internal > cache if case of CMA allocation failures. We should only complain if the > last CMA allocation fails (the one happening after all internal caches > have been flushed). > > Regards, > > Boris > --- > drivers/gpu/drm/drm_gem_cma_helper.c | 4 ++-- > include/drm/drm_gem_cma_helper.h | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c > index 373e33f22be4..e96c95c4fd23 100644 > --- a/drivers/gpu/drm/drm_gem_cma_helper.c > +++ b/drivers/gpu/drm/drm_gem_cma_helper.c > @@ -95,7 +95,7 @@ __drm_gem_cma_create(struct drm_device *drm, size_t size) > * > * Returns: > * A struct drm_gem_cma_object * on success or an ERR_PTR()-encoded negative > - * error code on failure. > + * error code on failure. Callers must check the return value. > */ > struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, > size_t size) > @@ -112,7 +112,7 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, > cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr, > GFP_KERNEL | __GFP_NOWARN); > if (!cma_obj->vaddr) { > - dev_err(drm->dev, "failed to allocate buffer with size %zu\n", > + dev_dbg(drm->dev, "failed to allocate buffer with size %zu\n", > size); > ret = -ENOMEM; > goto error; > diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h > index 58a739bf15f1..1b7d938a31a0 100644 > --- a/include/drm/drm_gem_cma_helper.h > +++ b/include/drm/drm_gem_cma_helper.h > @@ -77,8 +77,8 @@ int drm_gem_cma_dumb_create(struct drm_file *file_priv, > int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma); > > /* allocate physical memory */ > -struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, > - size_t size); > +struct drm_gem_cma_object * > +__must_check drm_gem_cma_create(struct drm_device *drm, size_t size); > > extern const struct vm_operations_struct drm_gem_cma_vm_ops; > > -- > 2.11.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel