__memblock_...ge_bottom_up(9)
π
__memblock_find_range_bottom_up β NAME
okay so bestie, welcome to the Kernel API Manual β¨ β this is the page for __memblock_find_range_bottom_up, and yes the header truncates it like that, we don't talk about it π. Short version: it's the find free area utility in bottom-up π β it goes hunting for a chunk of free memory, searching from the bottom of the range upward.
π¦ SYNOPSIS
phys_addr_t __init_memblock __memblock_find_range_bottom_up (phys_addr_t
start , phys_addr_t end , phys_addr_t size , phys_addr_t align , int nid
, enum memblock_flags flags );
that's the whole signature, no cap π
πΈ ARGUMENTS
startβ where the candidate range begins. the starting line, the bottom of the search zone π«Άendβ where the candidate range ends. plot twist: this one can also beMEMBLOCK_ALLOC_ANYWHEREorMEMBLOCK_ALLOC_ACCESSIBLE, so it's not always a plain endpoint πsizeβ how big the free area you're looking for needs to be πalignβ the alignment that free area has to have. picky queen behaviour and honestly? iconic β¨nidβ the nid of the free area you want, and if you passNUMA_NO_NODEit'll take any node. flexible fr fr πflagsβ pick from blocks based on memory attributes. it's giving "choose wisely" π₯
π§ DESCRIPTION
this is the utility that memblock_find_in_range_node calls in, and what it does is find free area bottom-up β β literally searching upward for a free chunk. lowkey the whole job. main character energy for a helper function, honestly π
π RETURN
- Found address on success π
0on failure π
that's it. no in-between, no "maybe". zero means nope π
π SEE ALSO
bestie there are SO many siblings, buckle in π the kernel file ./mm/memblock.c and the memblock overview(9) are the family home, and then:
__memblock_find_range_top_down(9)memblock_find_in_range_node(9)memblock_find_in_range(9)memblock_discard(9)memblock_double_array(9)memblock_merge_regions(9)memblock_insert_region(9)memblock_add_range(9)memblock_add_node(9)memblock_add(9)memblock_validate_numa_coverage(9)memblock_isolate_range(9)memblock_free(9)memblock_phys_free(9)memblock_setclr_flag(9)memblock_mark_hotplug(9)memblock_clear_hotplug(9)memblock_mark_mirror(9)memblock_mark_nomap(9)memblock_clear_nomap(9)memblock_reserved_mark_noinit(9)memblock_reserved_mark_kern(9)memblock_mark_kho_scratch(9)memblock_clear_kho_scratch(9)__next_mem_range(9)__next_mem_range_rev(9)memblock_set_node(9)memblock_alloc_range_nid(9)memblock_phys_alloc_range(9)memblock_phys_alloc_try_nid(9)memblock_alloc_internal(9)memblock_alloc_exact_nid_raw(9)memblock_alloc_try_nid_raw(9)memblock_alloc_hugetlb(9)memblock_alloc_try_nid(9)__memblock_alloc_or_panic(9)memblock_estimated_nr_free_pages(9)memblock_is_region_memory(9)memblock_is_region_reserved(9)memblock_free_all(9)reserve_mem_find_by_name(9)reserve_mem_release_by_name(9)
go read them, they're all part of the same memblock cinematic universe π«Ά iykyk
and that's the page!! mwah π this lil guy lives over in ./mm and the version we're looking at is dated October 2026 β so yeah, from the future, slay β periodt π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms