s390/topology: use cpu_topology array instead of per cpu variable
CPU topology information like cpu to node mapping must be setup in setup_arch already. Topology information is currently made available with a per cpu variable; this however will not work when the initialization will be moved to setup_arch, since the generic percpu setup will be done much later. Therefore convert back to a cpu_topology array. Reviewed-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
af51160ebd
commit
30fc4ca2a8
@@ -41,15 +41,15 @@ static bool topology_enabled = true;
|
||||
static DECLARE_WORK(topology_work, topology_work_fn);
|
||||
|
||||
/*
|
||||
* Socket/Book linked lists and per_cpu(cpu_topology) updates are
|
||||
* Socket/Book linked lists and cpu_topology updates are
|
||||
* protected by "sched_domains_mutex".
|
||||
*/
|
||||
static struct mask_info socket_info;
|
||||
static struct mask_info book_info;
|
||||
static struct mask_info drawer_info;
|
||||
|
||||
DEFINE_PER_CPU(struct cpu_topology_s390, cpu_topology);
|
||||
EXPORT_PER_CPU_SYMBOL_GPL(cpu_topology);
|
||||
struct cpu_topology_s390 cpu_topology[NR_CPUS];
|
||||
EXPORT_SYMBOL_GPL(cpu_topology);
|
||||
|
||||
static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu)
|
||||
{
|
||||
@@ -97,7 +97,7 @@ static void add_cpus_to_mask(struct topology_core *tl_core,
|
||||
if (lcpu < 0)
|
||||
continue;
|
||||
for (i = 0; i <= smp_cpu_mtid; i++) {
|
||||
topo = &per_cpu(cpu_topology, lcpu + i);
|
||||
topo = &cpu_topology[lcpu + i];
|
||||
topo->drawer_id = drawer->id;
|
||||
topo->book_id = book->id;
|
||||
topo->socket_id = socket->id;
|
||||
@@ -220,7 +220,7 @@ static void update_cpu_masks(void)
|
||||
int cpu;
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
topo = &per_cpu(cpu_topology, cpu);
|
||||
topo = &cpu_topology[cpu];
|
||||
topo->thread_mask = cpu_thread_map(cpu);
|
||||
topo->core_mask = cpu_group_map(&socket_info, cpu);
|
||||
topo->book_mask = cpu_group_map(&book_info, cpu);
|
||||
@@ -394,23 +394,23 @@ int topology_cpu_init(struct cpu *cpu)
|
||||
|
||||
static const struct cpumask *cpu_thread_mask(int cpu)
|
||||
{
|
||||
return &per_cpu(cpu_topology, cpu).thread_mask;
|
||||
return &cpu_topology[cpu].thread_mask;
|
||||
}
|
||||
|
||||
|
||||
const struct cpumask *cpu_coregroup_mask(int cpu)
|
||||
{
|
||||
return &per_cpu(cpu_topology, cpu).core_mask;
|
||||
return &cpu_topology[cpu].core_mask;
|
||||
}
|
||||
|
||||
static const struct cpumask *cpu_book_mask(int cpu)
|
||||
{
|
||||
return &per_cpu(cpu_topology, cpu).book_mask;
|
||||
return &cpu_topology[cpu].book_mask;
|
||||
}
|
||||
|
||||
static const struct cpumask *cpu_drawer_mask(int cpu)
|
||||
{
|
||||
return &per_cpu(cpu_topology, cpu).drawer_mask;
|
||||
return &cpu_topology[cpu].drawer_mask;
|
||||
}
|
||||
|
||||
static int __init early_parse_topology(char *p)
|
||||
|
Reference in New Issue
Block a user