From: Mike Rapoport <rppt@kernel.org>
To: Faiyaz Mohammed <faiyazm@codeaurora.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
vinmenon@codeaurora.org
Subject: Re: [PATCH v2] mm: memblock: drop __init from memblock functions to make it inline
Date: Tue, 17 Nov 2020 17:49:14 +0200 [thread overview]
Message-ID: <20201117154914.GI370813@kernel.org> (raw)
In-Reply-To: <1605526537-16166-1-git-send-email-faiyazm@codeaurora.org>
On Mon, Nov 16, 2020 at 05:05:37PM +0530, Faiyaz Mohammed wrote:
> __init is used with inline due to which memblock wraper functions are
> not getting inline.
> for example:
> [ 0.000000] memblock_alloc_try_nid: 1490 bytes align=0x40 nid=-1 from=0x0000000000000000 max_addr=0x0000000000000000 memblock_alloc+0x20/0x2c
> [ 0.000000] memblock_reserve: [0x000000023f09a3c0-0x000000023f09a991] memblock_alloc_range_nid+0xc0/0x188
>
> Dropping __init from memblock wrapper functions to make it inline and it
> increase the debugability.
> After:
> [ 0.000000] memblock_alloc_try_nid: 1490 bytes align=0x40 nid=-1 from=0x0000000000000000 max_addr=0x0000000000000000 start_kernel+0xa4/0x568
> [ 0.000000] memblock_reserve: [0x000000023f09a3c0-0x000000023f09a991] memblock_alloc_range_nid+0xc0/0x188
>
> Signed-off-by: Faiyaz Mohammed <faiyazm@codeaurora.org>
Applied, thanks!
I've updated memblock_alloc() to be __always_inline because some
configurations make kbuild happy without it.
>> WARNING: modpost: vmlinux.o(.text.unlikely+0xbde): Section mismatch in reference from the function memblock_alloc() to the function .init.text:memblock_alloc_try_nid()
The function memblock_alloc() references
the function __init memblock_alloc_try_nid().
This is often because memblock_alloc lacks a __init
annotation or the annotation of memblock_alloc_try_nid is wrong.
> ---
> include/linux/memblock.h | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/include/linux/memblock.h b/include/linux/memblock.h
> index ef13125..f78113f 100644
> --- a/include/linux/memblock.h
> +++ b/include/linux/memblock.h
> @@ -404,13 +404,13 @@ void *memblock_alloc_try_nid(phys_addr_t size, phys_addr_t align,
> phys_addr_t min_addr, phys_addr_t max_addr,
> int nid);
>
> -static inline void * __init memblock_alloc(phys_addr_t size, phys_addr_t align)
> +static inline void *memblock_alloc(phys_addr_t size, phys_addr_t align)
> {
> return memblock_alloc_try_nid(size, align, MEMBLOCK_LOW_LIMIT,
> MEMBLOCK_ALLOC_ACCESSIBLE, NUMA_NO_NODE);
> }
>
> -static inline void * __init memblock_alloc_raw(phys_addr_t size,
> +static inline void *memblock_alloc_raw(phys_addr_t size,
> phys_addr_t align)
> {
> return memblock_alloc_try_nid_raw(size, align, MEMBLOCK_LOW_LIMIT,
> @@ -418,7 +418,7 @@ static inline void * __init memblock_alloc_raw(phys_addr_t size,
> NUMA_NO_NODE);
> }
>
> -static inline void * __init memblock_alloc_from(phys_addr_t size,
> +static inline void *memblock_alloc_from(phys_addr_t size,
> phys_addr_t align,
> phys_addr_t min_addr)
> {
> @@ -426,33 +426,33 @@ static inline void * __init memblock_alloc_from(phys_addr_t size,
> MEMBLOCK_ALLOC_ACCESSIBLE, NUMA_NO_NODE);
> }
>
> -static inline void * __init memblock_alloc_low(phys_addr_t size,
> +static inline void *memblock_alloc_low(phys_addr_t size,
> phys_addr_t align)
> {
> return memblock_alloc_try_nid(size, align, MEMBLOCK_LOW_LIMIT,
> ARCH_LOW_ADDRESS_LIMIT, NUMA_NO_NODE);
> }
>
> -static inline void * __init memblock_alloc_node(phys_addr_t size,
> +static inline void *memblock_alloc_node(phys_addr_t size,
> phys_addr_t align, int nid)
> {
> return memblock_alloc_try_nid(size, align, MEMBLOCK_LOW_LIMIT,
> MEMBLOCK_ALLOC_ACCESSIBLE, nid);
> }
>
> -static inline void __init memblock_free_early(phys_addr_t base,
> +static inline void memblock_free_early(phys_addr_t base,
> phys_addr_t size)
> {
> memblock_free(base, size);
> }
>
> -static inline void __init memblock_free_early_nid(phys_addr_t base,
> +static inline void memblock_free_early_nid(phys_addr_t base,
> phys_addr_t size, int nid)
> {
> memblock_free(base, size);
> }
>
> -static inline void __init memblock_free_late(phys_addr_t base, phys_addr_t size)
> +static inline void memblock_free_late(phys_addr_t base, phys_addr_t size)
> {
> __memblock_free_late(base, size);
> }
> @@ -460,7 +460,7 @@ static inline void __init memblock_free_late(phys_addr_t base, phys_addr_t size)
> /*
> * Set the allocation direction to bottom-up or top-down.
> */
> -static inline void __init memblock_set_bottom_up(bool enable)
> +static inline void memblock_set_bottom_up(bool enable)
> {
> memblock.bottom_up = enable;
> }
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
> member of the Code Aurora Forum, hosted by The Linux Foundation
>
--
Sincerely yours,
Mike.
prev parent reply other threads:[~2020-11-17 15:49 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-16 11:35 [PATCH v2] mm: memblock: drop __init from memblock functions to make it inline Faiyaz Mohammed
2020-11-17 15:49 ` Mike Rapoport [this message]
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=20201117154914.GI370813@kernel.org \
--to=rppt@kernel.org \
--cc=faiyazm@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=vinmenon@codeaurora.org \
/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.