NUMA node-specifc memory allocation

From Xen
Revision as of 15:10, 30 January 2025 by Bernhard.Kaindl (talk | contribs)
Jump to navigationJump to search

NUMA node-specific memory allocation

Entry point: xenguest --mode hvm_build

xenguest --mode hvm_build: It calls do_hvm_build(), which calls stub_xc_hvm_build().

stub_xc_hvm_build()

It starts the HVM/PVH domain creation by filling out the fields of struct flags and struct xc_dom_image and calls hvm_build_setup_mem().

hvm_build_setup_mem()

  • Gets struct xc_dom_image *dom, max_mem_mib, and max_start_mib.
  • Calculates start and size of most parts of the domain’s memory maps
    • taking memory holes for I/O into account, e.g. mmio_size and mmio_start.
  • It then uses those to calculate lowmem_end and highmem_end.
  • Finally, calls xc_dom_boot_mem_init().

xc_dom_boot_mem_init()

In all cases, xc_dom_boot_mem_init() is called.

It calls the architecture-specific meminit hook for the domain type:

rc = dom->arch_hooks->meminit(dom);