memblock_set_node(9)
πΈ memblock_set_node(9) πΈ
okay bestie, welcome to the memblock_set_node page β it's from the Kernel API Manual, section 9, and it's honestly kind of a little legend. it's the function that goes "hey, this chunk of memory? it belongs to this NUMA node now π
" and just makes it happen. no cap.
β¨ SYNOPSIS β¨
int __init_memblock memblock_set_node (phys_addr_t base , phys_addr_t size ,
struct memblock_type *type , int nid );
like, look at that signature. it ate. π«Ά
π ARGUMENTS π
baseβ the base of the area you're setting the node ID for. the starting point, the origin story, the "we begin here." πsizeβ the size of that area. how much memory we're talking about. the span, the range, the vibe check radius. πtypeβ which memblock type we're setting the node ID for. it's astruct memblock_type *, so yes bestie, pointer, don't forget the*. π§nidβ the actual node ID you want to set. the number. the whole point of the whole function. π
π DESCRIPTION π
so here's the tea: this bad boy sets the nid of memblock type regions inside [base, base + size) to nid. literally exactly that. that's the whole job and it does it slayfully.
and the iconic part? regions which cross the area boundaries are split as necessary. so if a region is like half in, half out of your range, it doesn't just give up β it splits it. main character energy fr fr. π₯
β RETURN β
0on success β we love a zero. we stan a zero. π-errnoon failure β something went sideways and it's telling you why in errno form. π
π¦ SEE ALSO π¦
okay this list is LONG so buckle up, buttercup β every single one of these is here, no skipping, no cutting corners:
- Kernel file
./mm/memblock.cmemblock overview(9) __memblock_find_range_bottom_up(9)__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_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)
iykyk, that's the whole memblock friend group right there. π
and that's the page, bestie! this one lives in the source tree at ./mm and the version stamp says October 2026 β so yeah, timestamped and everything. now go set some node IDs, you gorgeous kernel gremlin πβ¨π
π¦ 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