xref: /openbmc/qemu/include/sysemu/numa.h (revision a44432b4)
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