I forgot to add this to the cover letter: These first 4 are the multi-range CMA support, and can be reviewed as an independent series: > mm/cma: export total and free number of pages for CMA areas > mm, cma: support multiple contiguous ranges, if requested > mm/cma: introduce cma_intersects function > mm, hugetlb: use cma_declare_contiguous_multi These implement huge/gigantic page pre-HVO, and can also be reviewed as a separate series if that's more convenient: > mm/hugetlb: remove redundant __ClearPageReserved > mm/hugetlb: use online nodes for bootmem allocation > mm/hugetlb: convert cmdline parameters from setup to early > x86/mm: make register_page_bootmem_memmap handle PTE mappings > mm/bootmem_info: export register_page_bootmem_memmap > mm/sparse: allow for alternate vmemmap section init at boot > mm/hugetlb: set migratetype for bootmem folios > mm: define __init_reserved_page_zone function > mm/hugetlb: check bootmem pages for zone intersections > mm/sparse: add vmemmap_*_hvo functions > mm/hugetlb: deal with multiple calls to hugetlb_bootmem_alloc > mm/hugetlb: move huge_boot_pages list init to hugetlb_bootmem_alloc > mm/hugetlb: add pre-HVO framework > mm/hugetlb_vmemmap: fix hugetlb_vmemmap_restore_folios definition > mm/hugetlb: do pre-HVO for bootmem allocated pages > x86/setup: call hugetlb_bootmem_alloc early > x86/mm: set ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT These implement early allocations from CMA, enabling pre-HVO of pre-allocated CMA hugepages. It depends on the previous two groups of patches: > mm/cma: simplify zone intersection check > mm/cma: introduce a cma validate function > mm/cma: introduce interface for early reservations > mm/hugetlb: add hugetlb_cma_only cmdline option > mm/hugetlb: enable bootmem allocation from CMA areas > mm/hugetlb: move hugetlb CMA code in to its own file >