[PATCH] mm/memory_hotplug: Drop memblock_phys_free() call in try_remove_memory()

David Hildenbrand david at redhat.com
Wed Jun 5 06:29:16 PDT 2024


On 05.06.24 10:20, Mike Rapoport wrote:
> From: Jonathan Cameron <Jonathan.Cameron at huawei.com>
> 
> The call for memblock_phys_free() in try_remove_memory() does not balance
> any call to memblock_alloc() (or memblock_reserve() for that matter).
> 
> There are no memblock_reserve() calls in mm/memory_hotplug.c, no memblock
> allocations possible after mm_core_init(), and even if memblock_add_node()
> called from add_memory_resource() would need to allocate memory, that
> memory would ba allocated from slab.
> 
> The patch f9126ab9241f ("memory-hotplug: fix wrong edge when hot add a new
> node") that introduced that call to memblock_free() does not provide
> adequate description why that was required and tinkering with memblock in
> the context of memory hotplug on x86 seems bogus because x86 never kept
> memblock after boot anyway.
> 
> Drop memblock_phys_free() call in try_remove_memory().

See my example regarding leftovers from previous bootmem allocations. 
But I don't think we'd encounter that situation often in practice.

Maybe more likely to happen on ppc with very small memory blocks? No idea.

Let's see if anything would really break

Acked-by: David Hildenbrand <david at redhat.com>

> 
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron at huawei.com>
> [rppt: rewrite the commit message]
> Signed-off-by: Mike Rapoport (IBM) <rppt at kernel.org>
> ---
>   mm/memory_hotplug.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 431b1f6753c0..e0d49f128e0d 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -2283,10 +2283,8 @@ static int __ref try_remove_memory(u64 start, u64 size)
>   		remove_memory_blocks_and_altmaps(start, size);
>   	}
>   
> -	if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) {
> -		memblock_phys_free(start, size);
> +	if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK))
>   		memblock_remove(start, size);
> -	}
>   
>   	release_mem_region_adjustable(start, size);
>   

-- 
Cheers,

David / dhildenb




More information about the linux-arm-kernel mailing list