e0d36f5
From patchwork Thu Oct  5 11:29:17 2017
e0d36f5
Content-Type: text/plain; charset="utf-8"
e0d36f5
MIME-Version: 1.0
e0d36f5
Content-Transfer-Encoding: 7bit
e0d36f5
Subject: [v2] drm/gem-cma-helper: Change the level of the allocation failure
e0d36f5
 message
e0d36f5
From: Boris Brezillon <boris.brezillon@free-electrons.com>
e0d36f5
X-Patchwork-Id: 180737
e0d36f5
Message-Id: <20171005112917.15949-1-boris.brezillon@free-electrons.com>
e0d36f5
To: David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
e0d36f5
 dri-devel@lists.freedesktop.org
e0d36f5
Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
e0d36f5
Date: Thu,  5 Oct 2017 13:29:17 +0200
e0d36f5
e0d36f5
drm_gem_cma_create() prints an error message when dma_alloc_wc() fails to
e0d36f5
allocate the amount of memory we requested. This can lead to annoying
e0d36f5
error messages when CMA is only one possible source of memory for the BO
e0d36f5
allocation. Turn this error message into a debug one.
e0d36f5
e0d36f5
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
e0d36f5
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
e0d36f5
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
e0d36f5
Reviewed-by: Eric Anholt <eric@anholt.net>
e0d36f5
---
e0d36f5
Changes in v2:
e0d36f5
- Remove __must_check attribute
e0d36f5
---
e0d36f5
 drivers/gpu/drm/drm_gem_cma_helper.c | 2 +-
e0d36f5
 1 file changed, 1 insertion(+), 1 deletion(-)
e0d36f5
e0d36f5
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
e0d36f5
index 373e33f22be4..020e7668dfab 100644
e0d36f5
--- a/drivers/gpu/drm/drm_gem_cma_helper.c
e0d36f5
+++ b/drivers/gpu/drm/drm_gem_cma_helper.c
e0d36f5
@@ -112,7 +112,7 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm,
e0d36f5
 	cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr,
e0d36f5
 				      GFP_KERNEL | __GFP_NOWARN);
e0d36f5
 	if (!cma_obj->vaddr) {
e0d36f5
-		dev_err(drm->dev, "failed to allocate buffer with size %zu\n",
e0d36f5
+		dev_dbg(drm->dev, "failed to allocate buffer with size %zu\n",
e0d36f5
 			size);
e0d36f5
 		ret = -ENOMEM;
e0d36f5
 		goto error;
e0d36f5
From patchwork Wed Oct  4 12:54:47 2017
e0d36f5
Content-Type: text/plain; charset="utf-8"
e0d36f5
MIME-Version: 1.0
e0d36f5
Content-Transfer-Encoding: 7bit
e0d36f5
Subject: cma: Take __GFP_NOWARN into account in cma_alloc()
e0d36f5
From: Boris Brezillon <boris.brezillon@free-electrons.com>
e0d36f5
X-Patchwork-Id: 180554
e0d36f5
Message-Id: <20171004125447.15195-1-boris.brezillon@free-electrons.com>
e0d36f5
To: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
e0d36f5
 Laura Abbott <labbott@redhat.com>
e0d36f5
Cc: Boris Brezillon <boris.brezillon@free-electrons.com>,
e0d36f5
 Jaewon Kim <jaewon31.kim@samsung.com>, dri-devel@lists.freedesktop.org
e0d36f5
Date: Wed,  4 Oct 2017 14:54:47 +0200
e0d36f5
e0d36f5
cma_alloc() unconditionally prints an INFO message when the CMA
e0d36f5
allocation fails. Make this message conditional on the non-presence of
e0d36f5
__GFP_NOWARN in gfp_mask.
e0d36f5
e0d36f5
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
e0d36f5
Acked-by: Laura Abbott <labbott@redhat.com>
e0d36f5
---
e0d36f5
Hello,
e0d36f5
e0d36f5
This patch aims at removing INFO messages that are displayed when the
e0d36f5
VC4 driver tries to allocate buffer objects. From the driver perspective
e0d36f5
an allocation failure is acceptable, and the driver can possibly do
e0d36f5
something to make following allocation succeed (like flushing the VC4
e0d36f5
internal cache).
e0d36f5
e0d36f5
Also, I don't understand why this message is only an INFO message, and
e0d36f5
not a WARN (pr_warn()). Please let me know if you have good reasons to
e0d36f5
keep it as an unconditional pr_info().
e0d36f5
e0d36f5
Thanks,
e0d36f5
e0d36f5
Boris
e0d36f5
---
e0d36f5
 mm/cma.c | 2 +-
e0d36f5
 1 file changed, 1 insertion(+), 1 deletion(-)
e0d36f5
e0d36f5
diff --git a/mm/cma.c b/mm/cma.c
e0d36f5
index c0da318c020e..022e52bd8370 100644
e0d36f5
--- a/mm/cma.c
e0d36f5
+++ b/mm/cma.c
e0d36f5
@@ -460,7 +460,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
e0d36f5
 
e0d36f5
 	trace_cma_alloc(pfn, page, count, align);
e0d36f5
 
e0d36f5
-	if (ret) {
e0d36f5
+	if (ret && !(gfp_mask & __GFP_NOWARN)) {
e0d36f5
 		pr_info("%s: alloc failed, req-size: %zu pages, ret: %d\n",
e0d36f5
 			__func__, count, ret);
e0d36f5
 		cma_debug_show_areas(cma);