All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: "zhai.he" <zhai.he@nxp.com>
Cc: akpm@linux-foundation.org, sboyd@kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	zhipeng.wang_1@nxp.com, jindong.yue@nxp.com
Subject: Re: [PATCH] Supports to use the default CMA when the device-specified CMA memory is not enough.
Date: Wed, 12 Jun 2024 09:20:02 +0200	[thread overview]
Message-ID: <2024061228-unburned-dander-c9a2@gregkh> (raw)
In-Reply-To: <20240612023831.810332-1-zhai.he@nxp.com>

On Wed, Jun 12, 2024 at 10:38:31AM +0800, zhai.he wrote:
> From: He Zhai <zhai.he@nxp.com>
> 
> In the current code logic, if the device-specified CMA memory
> allocation fails, memory will not be allocated from the default CMA area.
> This patch will use the default cma region when the device's
> specified CMA is not enough.
> 
> Signed-off-by: He Zhai <zhai.he@nxp.com>
> ---
>  kernel/dma/contiguous.c | 11 +++++++++--
>  mm/cma.c                |  2 +-
>  2 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/kernel/dma/contiguous.c b/kernel/dma/contiguous.c
> index 055da410ac71..e45cfb24500f 100644
> --- a/kernel/dma/contiguous.c
> +++ b/kernel/dma/contiguous.c
> @@ -357,8 +357,13 @@ struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp)
>  	/* CMA can be used only in the context which permits sleeping */
>  	if (!gfpflags_allow_blocking(gfp))
>  		return NULL;
> -	if (dev->cma_area)
> -		return cma_alloc_aligned(dev->cma_area, size, gfp);
> +	if (dev->cma_area) {
> +		struct page *page = NULL;
> +
> +		page = cma_alloc_aligned(dev->cma_area, size, gfp);
> +		if (page)
> +			return page;
> +	}
>  	if (size <= PAGE_SIZE)
>  		return NULL;
>  
> @@ -406,6 +411,8 @@ void dma_free_contiguous(struct device *dev, struct page *page, size_t size)
>  	if (dev->cma_area) {
>  		if (cma_release(dev->cma_area, page, count))
>  			return;
> +		if (cma_release(dma_contiguous_default_area, page, count))
> +			return;
>  	} else {
>  		/*
>  		 * otherwise, page is from either per-numa cma or default cma
> diff --git a/mm/cma.c b/mm/cma.c
> index 3e9724716bad..f225b3f65bd2 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -495,7 +495,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
>  	}
>  
>  	if (ret && !no_warn) {
> -		pr_err_ratelimited("%s: %s: alloc failed, req-size: %lu pages, ret: %d\n",
> +		pr_debug("%s: %s: alloc failed, req-size: %lu pages, ret: %d, try to use default cma\n",
>  				   __func__, cma->name, count, ret);

Why did you change the error level here?

And when you use pr_debug(), you NEVER need to use __func__, as it is
already included automatically in the message output.  So now you have
it twice :)

thanks,

greg k-h

  parent reply	other threads:[~2024-06-12  7:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-12  2:38 [PATCH] Supports to use the default CMA when the device-specified CMA memory is not enough zhai.he
2024-06-12  2:39 ` kernel test robot
2024-06-12  7:20 ` Greg KH [this message]
2024-06-12  7:34   ` [EXT] " Zhai He
2024-06-12  7:47     ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2024061228-unburned-dander-c9a2@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=jindong.yue@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=sboyd@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=zhai.he@nxp.com \
    --cc=zhipeng.wang_1@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.