[PATCH v4 02/14] memblock: add MEMBLOCK_RSRV_KERN flag
Changyuan Lyu
changyuanl at google.com
Tue Feb 25 17:53:39 PST 2025
Hi Mike,
On Thu, 6 Feb 2025 15:27:42 +0200, Mike Rapoport <rppt at kernel.org> wrote:
> From: "Mike Rapoport (Microsoft)" <rppt at kernel.org>
>
> to denote areas that were reserved for kernel use either directly with
> memblock_reserve_kern() or via memblock allocations.
>
> Signed-off-by: Mike Rapoport (Microsoft) <rppt at kernel.org>
> ---
> include/linux/memblock.h | 16 +++++++++++++++-
> mm/memblock.c | 32 ++++++++++++++++++++++++--------
> 2 files changed, 39 insertions(+), 9 deletions(-)
>
> diff --git a/include/linux/memblock.h b/include/linux/memblock.h
> index e79eb6ac516f..65e274550f5d 100644
> --- a/include/linux/memblock.h
> +++ b/include/linux/memblock.h
> ......
> @@ -116,7 +117,19 @@ int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid,
> int memblock_add(phys_addr_t base, phys_addr_t size);
> int memblock_remove(phys_addr_t base, phys_addr_t size);
> int memblock_phys_free(phys_addr_t base, phys_addr_t size);
> -int memblock_reserve(phys_addr_t base, phys_addr_t size);
> +int __memblock_reserve(phys_addr_t base, phys_addr_t size, int nid,
> + enum memblock_flags flags);
> +
> +static __always_inline int memblock_reserve(phys_addr_t base, phys_addr_t size)
> +{
> + return __memblock_reserve(base, size, NUMA_NO_NODE, 0);
Without this patch `memblock_reserve` eventually calls `memblock_add_range`
with `MAX_NUMNODES`, but with this patch, `memblock_reserve` calls
`memblock_add_range` with `NUMA_NO_NODE`. Is it intended or an
accidental typo? Thanks!
> ......
>
> -int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size)
> +int __init_memblock __memblock_reserve(phys_addr_t base, phys_addr_t size,
> + int nid, enum memblock_flags flags)
> {
> phys_addr_t end = base + size - 1;
>
> - memblock_dbg("%s: [%pa-%pa] %pS\n", __func__,
> - &base, &end, (void *)_RET_IP_);
> + memblock_dbg("%s: [%pa-%pa] nid=%d flags=%x %pS\n", __func__,
> + &base, &end, nid, flags, (void *)_RET_IP_);
>
> - return memblock_add_range(&memblock.reserved, base, size, MAX_NUMNODES, 0);
Originally `memblock_reserve` calls `memblock_add_range` with `MAX_NUMNODES`,
See my comments above.
Best,
Changyuan
More information about the kexec
mailing list