Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sh/kernel/topology.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* arch/sh/kernel/topology.c
4
*
5
* Copyright (C) 2007 Paul Mundt
6
*/
7
#include <linux/cpu.h>
8
#include <linux/cpumask.h>
9
#include <linux/init.h>
10
#include <linux/percpu.h>
11
#include <linux/topology.h>
12
#include <linux/node.h>
13
#include <linux/nodemask.h>
14
#include <linux/export.h>
15
16
static DEFINE_PER_CPU(struct cpu, cpu_devices);
17
18
cpumask_t cpu_core_map[NR_CPUS];
19
EXPORT_SYMBOL(cpu_core_map);
20
21
static cpumask_t cpu_coregroup_map(int cpu)
22
{
23
/*
24
* Presently all SH-X3 SMP cores are multi-cores, so just keep it
25
* simple until we have a method for determining topology..
26
*/
27
return *cpu_possible_mask;
28
}
29
30
const struct cpumask *cpu_coregroup_mask(int cpu)
31
{
32
return &cpu_core_map[cpu];
33
}
34
35
int arch_update_cpu_topology(void)
36
{
37
unsigned int cpu;
38
39
for_each_possible_cpu(cpu)
40
cpu_core_map[cpu] = cpu_coregroup_map(cpu);
41
42
return 0;
43
}
44
45
static int __init topology_init(void)
46
{
47
int i, ret;
48
49
for_each_present_cpu(i) {
50
struct cpu *c = &per_cpu(cpu_devices, i);
51
52
c->hotpluggable = 1;
53
54
ret = register_cpu(c, i);
55
if (unlikely(ret))
56
printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n",
57
__func__, i, ret);
58
}
59
60
#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
61
/*
62
* In the UP case, make sure the CPU association is still
63
* registered under each node. Without this, sysfs fails
64
* to make the connection between nodes other than node0
65
* and cpu0.
66
*/
67
for_each_online_node(i)
68
if (i != numa_node_id())
69
register_cpu_under_node(raw_smp_processor_id(), i);
70
#endif
71
72
return 0;
73
}
74
subsys_initcall(topology_init);
75
76