[PATCH] drm/gem-cma-helper: Change the level of the allocation failure message
Daniel Vetter
daniel at ffwll.ch
Wed Oct 4 16:10:56 UTC 2017
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 at free-electrons.com>
Assuming gcc doesn't spot any driver that now stumbles over the
__must_check:
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
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
More information about the dri-devel
mailing list