Lines Matching refs:ms

28 static bool numa_enabled(const MachineState *ms)  in numa_enabled()  argument
30 return (ms->numa_state && ms->numa_state->num_nodes) ? true : false; in numa_enabled()
33 int riscv_socket_count(const MachineState *ms) in riscv_socket_count() argument
35 return (numa_enabled(ms)) ? ms->numa_state->num_nodes : 1; in riscv_socket_count()
38 int riscv_socket_first_hartid(const MachineState *ms, int socket_id) in riscv_socket_first_hartid() argument
40 int i, first_hartid = ms->smp.cpus; in riscv_socket_first_hartid()
42 if (!numa_enabled(ms)) { in riscv_socket_first_hartid()
46 for (i = 0; i < ms->smp.cpus; i++) { in riscv_socket_first_hartid()
47 if (ms->possible_cpus->cpus[i].props.node_id != socket_id) { in riscv_socket_first_hartid()
55 return (first_hartid < ms->smp.cpus) ? first_hartid : -1; in riscv_socket_first_hartid()
58 int riscv_socket_last_hartid(const MachineState *ms, int socket_id) in riscv_socket_last_hartid() argument
62 if (!numa_enabled(ms)) { in riscv_socket_last_hartid()
63 return (!socket_id) ? ms->smp.cpus - 1 : -1; in riscv_socket_last_hartid()
66 for (i = 0; i < ms->smp.cpus; i++) { in riscv_socket_last_hartid()
67 if (ms->possible_cpus->cpus[i].props.node_id != socket_id) { in riscv_socket_last_hartid()
75 return (last_hartid < ms->smp.cpus) ? last_hartid : -1; in riscv_socket_last_hartid()
78 int riscv_socket_hart_count(const MachineState *ms, int socket_id) in riscv_socket_hart_count() argument
82 if (!numa_enabled(ms)) { in riscv_socket_hart_count()
83 return (!socket_id) ? ms->smp.cpus : -1; in riscv_socket_hart_count()
86 first_hartid = riscv_socket_first_hartid(ms, socket_id); in riscv_socket_hart_count()
91 last_hartid = riscv_socket_last_hartid(ms, socket_id); in riscv_socket_hart_count()
103 bool riscv_socket_check_hartids(const MachineState *ms, int socket_id) in riscv_socket_check_hartids() argument
107 if (!numa_enabled(ms)) { in riscv_socket_check_hartids()
111 first_hartid = riscv_socket_first_hartid(ms, socket_id); in riscv_socket_check_hartids()
116 last_hartid = riscv_socket_last_hartid(ms, socket_id); in riscv_socket_check_hartids()
122 if (ms->possible_cpus->cpus[i].props.node_id != socket_id) { in riscv_socket_check_hartids()
130 uint64_t riscv_socket_mem_offset(const MachineState *ms, int socket_id) in riscv_socket_mem_offset() argument
135 if (!numa_enabled(ms)) { in riscv_socket_mem_offset()
139 for (i = 0; i < ms->numa_state->num_nodes; i++) { in riscv_socket_mem_offset()
143 mem_offset += ms->numa_state->nodes[i].node_mem; in riscv_socket_mem_offset()
149 uint64_t riscv_socket_mem_size(const MachineState *ms, int socket_id) in riscv_socket_mem_size() argument
151 if (!numa_enabled(ms)) { in riscv_socket_mem_size()
152 return (!socket_id) ? ms->ram_size : 0; in riscv_socket_mem_size()
155 return (socket_id < ms->numa_state->num_nodes) ? in riscv_socket_mem_size()
156 ms->numa_state->nodes[socket_id].node_mem : 0; in riscv_socket_mem_size()
159 void riscv_socket_fdt_write_id(const MachineState *ms, const char *node_name, in riscv_socket_fdt_write_id() argument
162 if (numa_enabled(ms)) { in riscv_socket_fdt_write_id()
163 qemu_fdt_setprop_cell(ms->fdt, node_name, "numa-node-id", socket_id); in riscv_socket_fdt_write_id()
167 void riscv_socket_fdt_write_distance_matrix(const MachineState *ms) in riscv_socket_fdt_write_distance_matrix() argument
172 if (numa_enabled(ms) && ms->numa_state->have_numa_distance) { in riscv_socket_fdt_write_distance_matrix()
173 dist_matrix_size = riscv_socket_count(ms) * riscv_socket_count(ms); in riscv_socket_fdt_write_distance_matrix()
177 for (i = 0; i < riscv_socket_count(ms); i++) { in riscv_socket_fdt_write_distance_matrix()
178 for (j = 0; j < riscv_socket_count(ms); j++) { in riscv_socket_fdt_write_distance_matrix()
179 idx = (i * riscv_socket_count(ms) + j) * 3; in riscv_socket_fdt_write_distance_matrix()
183 cpu_to_be32(ms->numa_state->nodes[i].distance[j]); in riscv_socket_fdt_write_distance_matrix()
187 qemu_fdt_add_subnode(ms->fdt, "/distance-map"); in riscv_socket_fdt_write_distance_matrix()
188 qemu_fdt_setprop_string(ms->fdt, "/distance-map", "compatible", in riscv_socket_fdt_write_distance_matrix()
190 qemu_fdt_setprop(ms->fdt, "/distance-map", "distance-matrix", in riscv_socket_fdt_write_distance_matrix()
197 riscv_numa_cpu_index_to_props(MachineState *ms, unsigned cpu_index) in riscv_numa_cpu_index_to_props() argument
199 MachineClass *mc = MACHINE_GET_CLASS(ms); in riscv_numa_cpu_index_to_props()
200 const CPUArchIdList *possible_cpus = mc->possible_cpu_arch_ids(ms); in riscv_numa_cpu_index_to_props()
206 int64_t riscv_numa_get_default_cpu_node_id(const MachineState *ms, int idx) in riscv_numa_get_default_cpu_node_id() argument
210 if (ms->numa_state->num_nodes > ms->smp.cpus) { in riscv_numa_get_default_cpu_node_id()
213 ms->numa_state->num_nodes, ms->smp.cpus); in riscv_numa_get_default_cpu_node_id()
216 if (ms->numa_state->num_nodes) { in riscv_numa_get_default_cpu_node_id()
217 nidx = idx / (ms->smp.cpus / ms->numa_state->num_nodes); in riscv_numa_get_default_cpu_node_id()
218 if (ms->numa_state->num_nodes <= nidx) { in riscv_numa_get_default_cpu_node_id()
219 nidx = ms->numa_state->num_nodes - 1; in riscv_numa_get_default_cpu_node_id()
226 const CPUArchIdList *riscv_numa_possible_cpu_arch_ids(MachineState *ms) in riscv_numa_possible_cpu_arch_ids() argument
229 unsigned int max_cpus = ms->smp.max_cpus; in riscv_numa_possible_cpu_arch_ids()
231 if (ms->possible_cpus) { in riscv_numa_possible_cpu_arch_ids()
232 assert(ms->possible_cpus->len == max_cpus); in riscv_numa_possible_cpu_arch_ids()
233 return ms->possible_cpus; in riscv_numa_possible_cpu_arch_ids()
236 ms->possible_cpus = g_malloc0(sizeof(CPUArchIdList) + in riscv_numa_possible_cpu_arch_ids()
238 ms->possible_cpus->len = max_cpus; in riscv_numa_possible_cpu_arch_ids()
239 for (n = 0; n < ms->possible_cpus->len; n++) { in riscv_numa_possible_cpu_arch_ids()
240 ms->possible_cpus->cpus[n].type = ms->cpu_type; in riscv_numa_possible_cpu_arch_ids()
241 ms->possible_cpus->cpus[n].arch_id = n; in riscv_numa_possible_cpu_arch_ids()
242 ms->possible_cpus->cpus[n].props.has_core_id = true; in riscv_numa_possible_cpu_arch_ids()
243 ms->possible_cpus->cpus[n].props.core_id = n; in riscv_numa_possible_cpu_arch_ids()
246 return ms->possible_cpus; in riscv_numa_possible_cpu_arch_ids()