1e35704baSEduardo Habkost #ifndef SYSEMU_NUMA_H 2e35704baSEduardo Habkost #define SYSEMU_NUMA_H 3e35704baSEduardo Habkost 4e35704baSEduardo Habkost #include "qemu/bitmap.h" 5e35704baSEduardo Habkost #include "sysemu/sysemu.h" 6e35704baSEduardo Habkost #include "sysemu/hostmem.h" 7*a44432b4SMarkus Armbruster #include "qapi/qapi-types-machine.h" 8*a44432b4SMarkus Armbruster #include "exec/cpu-common.h" 9*a44432b4SMarkus Armbruster 10*a44432b4SMarkus Armbruster struct CPUArchId; 11e35704baSEduardo Habkost 12e35704baSEduardo Habkost extern int nb_numa_nodes; /* Number of NUMA nodes */ 130f203430SHe Chen extern bool have_numa_distance; 14e35704baSEduardo Habkost 15aec90730SEric Blake struct NodeInfo { 16e35704baSEduardo Habkost uint64_t node_mem; 17e35704baSEduardo Habkost struct HostMemoryBackend *node_memdev; 18e35704baSEduardo Habkost bool present; 190f203430SHe Chen uint8_t distance[MAX_NODES]; 203bfe5716SLaurent Vivier }; 21fa9ea81dSBharata B Rao 2231959e82SVadim Galitsyn struct NumaNodeMem { 2331959e82SVadim Galitsyn uint64_t node_mem; 2431959e82SVadim Galitsyn uint64_t node_plugged_mem; 2531959e82SVadim Galitsyn }; 2631959e82SVadim Galitsyn 27e35704baSEduardo Habkost extern NodeInfo numa_info[MAX_NODES]; 2852924deaSMarkus Armbruster 2952924deaSMarkus Armbruster void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp); 30ea089eebSIgor Mammedov void parse_numa_opts(MachineState *ms); 317a3099fcSIgor Mammedov void numa_complete_configuration(MachineState *ms); 3231959e82SVadim Galitsyn void query_numa_node_mem(NumaNodeMem node_mem[]); 33e35704baSEduardo Habkost extern QemuOptsList qemu_numa_opts; 343bfe5716SLaurent Vivier void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, 353bfe5716SLaurent Vivier int nb_nodes, ram_addr_t size); 363bfe5716SLaurent Vivier void numa_default_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, 373bfe5716SLaurent Vivier int nb_nodes, ram_addr_t size); 38*a44432b4SMarkus Armbruster void numa_cpu_pre_plug(const struct CPUArchId *slot, DeviceState *dev, 39*a44432b4SMarkus Armbruster Error **errp); 40*a44432b4SMarkus Armbruster 41e35704baSEduardo Habkost #endif 42