Lines Matching +full:top +full:- +full:level
1 // SPDX-License-Identifier: GPL-2.0
46 #define NODE_ID_FREE -1
75 if (emu_cores->to_node_id[core_id] == NODE_ID_FREE) { in pin_core_to_node()
76 emu_cores->per_node[node_id]++; in pin_core_to_node()
77 emu_cores->to_node_id[core_id] = node_id; in pin_core_to_node()
78 emu_cores->total++; in pin_core_to_node()
80 WARN_ON(emu_cores->to_node_id[core_id] != node_id); in pin_core_to_node()
89 return emu_cores->per_node[node->id]; in cores_pinned()
97 return emu_cores->to_node_id[core->id]; in core_pinned_to_node_id()
120 return core->parent->parent->parent->parent; in core_node()
128 return core->parent->parent->parent; in core_drawer()
136 return core->parent->parent; in core_book()
144 return core->parent; in core_mc()
152 if (core_drawer(core1)->id != core_drawer(core2)->id) in dist_core_to_core()
154 if (core_book(core1)->id != core_book(core2)->id) in dist_core_to_core()
156 if (core_mc(core1)->id != core_mc(core2)->id) in dist_core_to_core()
189 * gets more than "emu_cores->per_node_target + extra" cores.
197 cores_target = emu_cores->per_node_target + extra; in node_for_core()
202 if (core_pinned_to_node_id(core) == node->id) { in node_for_core()
231 pin_core_to_node(core->id, node->id); in toptree_to_numa_single()
236 * Move structures of given level to specified NUMA node
239 enum toptree_level level, bool perfect) in move_level_to_numa_node() argument
241 int cores_free, cores_target = emu_cores->per_node_target; in move_level_to_numa_node()
244 toptree_for_each_safe(cur, tmp, phys, level) { in move_level_to_numa_node()
245 cores_free = cores_target - toptree_count(node, CORE); in move_level_to_numa_node()
257 * Move structures of a given level to NUMA nodes. If "perfect" is specified
262 enum toptree_level level, bool perfect) in move_level_to_numa() argument
267 move_level_to_numa_node(node, phys, level, perfect); in move_level_to_numa()
286 pin_core_to_node(core->id, core_node(core)->id); in toptree_to_numa_first()
317 for (i = 0; i < ARRAY_SIZE(emu_cores->to_node_id); i++) in create_core_to_node_map()
318 emu_cores->to_node_id[i] = NODE_ID_FREE; in create_core_to_node_map()
331 cores_total = emu_cores->total + cores_free(phys); in toptree_to_numa()
332 emu_cores->per_node_target = cores_total / emu_nodes; in toptree_to_numa()
342 WARN_ON(cpumask_weight(&phys->mask)); in toptree_to_numa()
352 struct cpu_topology_s390 *top; in toptree_from_topology() local
358 top = &cpu_topology[cpu]; in toptree_from_topology()
360 drawer = toptree_get_child(node, top->drawer_id); in toptree_from_topology()
361 book = toptree_get_child(drawer, top->book_id); in toptree_from_topology()
362 mc = toptree_get_child(book, top->socket_id); in toptree_from_topology()
366 cpumask_set_cpu(cpu, &core->mask); in toptree_from_topology()
377 struct cpu_topology_s390 *top; in topology_add_core() local
380 for_each_cpu(cpu, &core->mask) { in topology_add_core()
381 top = &cpu_topology[cpu]; in topology_add_core()
382 cpumask_copy(&top->thread_mask, &core->mask); in topology_add_core()
383 cpumask_copy(&top->core_mask, &core_mc(core)->mask); in topology_add_core()
384 cpumask_copy(&top->book_mask, &core_book(core)->mask); in topology_add_core()
385 cpumask_copy(&top->drawer_mask, &core_drawer(core)->mask); in topology_add_core()
386 cpumask_set_cpu(cpu, &node_to_cpumask_map[core_node(core)->id]); in topology_add_core()
387 top->node_id = core_node(core)->id; in topology_add_core()
420 for (cid = 0; cid < ARRAY_SIZE(emu_cores->to_node_id); cid++) { in print_node_to_core_map()
421 if (emu_cores->to_node_id[cid] == nid) in print_node_to_core_map()
439 if (emu_cores->to_node_id[core_id] != NODE_ID_FREE) in pin_all_possible_cpus()