blob: 714e97f08cfe4144705ea33f94b6790b8116fcb3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
--- b/kernel/cpu.c
+++ a/kernel/cpu.c
@@ -1917,15 +1917,6 @@
kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
}
-static void cpuhp_online_cpu_device(unsigned int cpu)
-{
- struct device *dev = get_cpu_device(cpu);
-
- dev->offline = false;
- /* Tell user space about the state change */
- kobject_uevent(&dev->kobj, KOBJ_ONLINE);
-}
-
static int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval)
{
int cpu, ret = 0;
@@ -1958,24 +1949,11 @@
return ret;
}
+static void cpuhp_smt_enable(void)
-static int cpuhp_smt_enable(void)
{
- int cpu, ret = 0;
-
cpu_maps_update_begin();
cpu_smt_control = CPU_SMT_ENABLED;
- for_each_present_cpu(cpu) {
- /* Skip online CPUs and CPUs on offline nodes */
- if (cpu_online(cpu) || !node_online(cpu_to_node(cpu)))
- continue;
- ret = _cpu_up(cpu, 0, CPUHP_ONLINE);
- if (ret)
- break;
- /* See comment in cpuhp_smt_disable() */
- cpuhp_online_cpu_device(cpu);
- }
cpu_maps_update_done();
- return ret;
}
static ssize_t
@@ -2006,7 +1984,7 @@
if (ctrlval != cpu_smt_control) {
switch (ctrlval) {
case CPU_SMT_ENABLED:
+ cpuhp_smt_enable();
- ret = cpuhp_smt_enable();
break;
case CPU_SMT_DISABLED:
case CPU_SMT_FORCE_DISABLED:
|