Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
sh
kernel
topology.c
Go to the documentation of this file.
1
/*
2
* arch/sh/kernel/topology.c
3
*
4
* Copyright (C) 2007 Paul Mundt
5
*
6
* This file is subject to the terms and conditions of the GNU General Public
7
* License. See the file "COPYING" in the main directory of this archive
8
* for more details.
9
*/
10
#include <
linux/cpu.h
>
11
#include <
linux/cpumask.h
>
12
#include <
linux/init.h
>
13
#include <
linux/percpu.h
>
14
#include <
linux/topology.h
>
15
#include <
linux/node.h
>
16
#include <
linux/nodemask.h
>
17
#include <linux/export.h>
18
19
static
DEFINE_PER_CPU
(
struct
cpu
, cpu_devices);
20
21
cpumask_t
cpu_core_map
[
NR_CPUS
];
22
EXPORT_SYMBOL
(cpu_core_map);
23
24
static
cpumask_t
cpu_coregroup_map(
unsigned
int
cpu
)
25
{
26
/*
27
* Presently all SH-X3 SMP cores are multi-cores, so just keep it
28
* simple until we have a method for determining topology..
29
*/
30
return
*
cpu_possible_mask
;
31
}
32
33
const
struct
cpumask
*
cpu_coregroup_mask
(
unsigned
int
cpu
)
34
{
35
return
&cpu_core_map[
cpu
];
36
}
37
38
int
arch_update_cpu_topology
(
void
)
39
{
40
unsigned
int
cpu
;
41
42
for_each_possible_cpu
(cpu)
43
cpu_core_map[
cpu
] = cpu_coregroup_map(cpu);
44
45
return
0;
46
}
47
48
static
int
__init
topology_init(
void
)
49
{
50
int
i
,
ret
;
51
52
#ifdef CONFIG_NEED_MULTIPLE_NODES
53
for_each_online_node
(i)
54
register_one_node
(i);
55
#endif
56
57
for_each_present_cpu
(i) {
58
struct
cpu
*
c
= &
per_cpu
(cpu_devices, i);
59
60
c->
hotpluggable
= 1;
61
62
ret =
register_cpu
(c, i);
63
if
(
unlikely
(ret))
64
printk
(
KERN_WARNING
"%s: register_cpu %d failed (%d)\n"
,
65
__func__, i, ret);
66
}
67
68
#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
69
/*
70
* In the UP case, make sure the CPU association is still
71
* registered under each node. Without this, sysfs fails
72
* to make the connection between nodes other than node0
73
* and cpu0.
74
*/
75
for_each_online_node
(i)
76
if
(i !=
numa_node_id
())
77
register_cpu_under_node
(
raw_smp_processor_id
(), i);
78
#endif
79
80
return
0;
81
}
82
subsys_initcall
(topology_init);
Generated on Thu Jan 10 2013 12:56:25 for Linux Kernel by
1.8.2