]>
Commit | Line | Data |
---|---|---|
e35704ba EH |
1 | #ifndef SYSEMU_NUMA_H |
2 | #define SYSEMU_NUMA_H | |
3 | ||
e35704ba EH |
4 | #include "qemu/bitmap.h" |
5 | #include "qemu/option.h" | |
6 | #include "sysemu/sysemu.h" | |
7 | #include "sysemu/hostmem.h" | |
57924bcd | 8 | #include "hw/boards.h" |
e35704ba EH |
9 | |
10 | extern int nb_numa_nodes; /* Number of NUMA nodes */ | |
0f203430 | 11 | extern bool have_numa_distance; |
e35704ba | 12 | |
fa9ea81d BR |
13 | struct numa_addr_range { |
14 | ram_addr_t mem_start; | |
15 | ram_addr_t mem_end; | |
16 | QLIST_ENTRY(numa_addr_range) entry; | |
17 | }; | |
18 | ||
3bfe5716 | 19 | struct node_info { |
e35704ba | 20 | uint64_t node_mem; |
cdda2018 | 21 | unsigned long *node_cpu; |
e35704ba EH |
22 | struct HostMemoryBackend *node_memdev; |
23 | bool present; | |
fa9ea81d | 24 | QLIST_HEAD(, numa_addr_range) addr; /* List to store address ranges */ |
0f203430 | 25 | uint8_t distance[MAX_NODES]; |
3bfe5716 | 26 | }; |
fa9ea81d | 27 | |
e35704ba | 28 | extern NodeInfo numa_info[MAX_NODES]; |
57924bcd | 29 | void parse_numa_opts(MachineClass *mc); |
dde11116 | 30 | void numa_post_machine_init(void); |
e35704ba EH |
31 | void query_numa_node_mem(uint64_t node_mem[]); |
32 | extern QemuOptsList qemu_numa_opts; | |
fa9ea81d BR |
33 | void numa_set_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node); |
34 | void numa_unset_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node); | |
e75e2a14 | 35 | uint32_t numa_get_node(ram_addr_t addr, Error **errp); |
3bfe5716 LV |
36 | void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, |
37 | int nb_nodes, ram_addr_t size); | |
38 | void numa_default_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, | |
39 | int nb_nodes, ram_addr_t size); | |
40 | ||
e35704ba | 41 | |
6bea1ddf IM |
42 | /* on success returns node index in numa_info, |
43 | * on failure returns nb_numa_nodes */ | |
44 | int numa_get_node_for_cpu(int idx); | |
e35704ba | 45 | #endif |