aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-02-20 15:52:55 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-20 15:52:55 -0500
commit828cad8ea05d194d8a9452e0793261c2024c23a2 (patch)
tree0ad7c7e044cdcfe75d78da0b52eb2358d4686e02 /arch/x86/kernel/cpu
parent60c906bab124a0627fba04c9ca5e61bba4747c0c (diff)
parentbb3bac2ca9a3a5b7fa601781adf70167a0449d75 (diff)
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar: "The main changes in this (fairly busy) cycle were: - There was a class of scheduler bugs related to forgetting to update the rq-clock timestamp which can cause weird and hard to debug problems, so there's a new debug facility for this: which uncovered a whole lot of bugs which convinced us that we want to keep the debug facility. (Peter Zijlstra, Matt Fleming) - Various cputime related updates: eliminate cputime and use u64 nanoseconds directly, simplify and improve the arch interfaces, implement delayed accounting more widely, etc. - (Frederic Weisbecker) - Move code around for better structure plus cleanups (Ingo Molnar) - Move IO schedule accounting deeper into the scheduler plus related changes to improve the situation (Tejun Heo) - ... plus a round of sched/rt and sched/deadline fixes, plus other fixes, updats and cleanups" * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (85 commits) sched/core: Remove unlikely() annotation from sched_move_task() sched/autogroup: Rename auto_group.[ch] to autogroup.[ch] sched/topology: Split out scheduler topology code from core.c into topology.c sched/core: Remove unnecessary #include headers sched/rq_clock: Consolidate the ordering of the rq_clock methods delayacct: Include <uapi/linux/taskstats.h> sched/core: Clean up comments sched/rt: Show the 'sched_rr_timeslice' SCHED_RR timeslice tuning knob in milliseconds sched/clock: Add dummy clear_sched_clock_stable() stub function sched/cputime: Remove generic asm headers sched/cputime: Remove unused nsec_to_cputime() s390, sched/cputime: Remove unused cputime definitions powerpc, sched/cputime: Remove unused cputime definitions s390, sched/cputime: Make arch_cpu_idle_time() to return nsecs ia64, sched/cputime: Remove unused cputime definitions ia64: Convert vtime to use nsec units directly ia64, sched/cputime: Move the nsecs based cputime headers to the last arch using it sched/cputime: Remove jiffies based cputime sched/cputime, vtime: Return nsecs instead of cputime_t to account sched/cputime: Complete nsec conversion of tick based accounting ...
Diffstat (limited to 'arch/x86/kernel/cpu')
-rw-r--r--arch/x86/kernel/cpu/amd.c6
-rw-r--r--arch/x86/kernel/cpu/centaur.c6
-rw-r--r--arch/x86/kernel/cpu/common.c3
-rw-r--r--arch/x86/kernel/cpu/cyrix.c2
-rw-r--r--arch/x86/kernel/cpu/intel.c6
-rw-r--r--arch/x86/kernel/cpu/transmeta.c3
6 files changed, 20 insertions, 6 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 2b4cf04239b6..4e95b2e0d95f 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -555,8 +555,10 @@ static void early_init_amd(struct cpuinfo_x86 *c)
555 if (c->x86_power & (1 << 8)) { 555 if (c->x86_power & (1 << 8)) {
556 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); 556 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
557 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); 557 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
558 if (!check_tsc_unstable()) 558 if (check_tsc_unstable())
559 set_sched_clock_stable(); 559 clear_sched_clock_stable();
560 } else {
561 clear_sched_clock_stable();
560 } 562 }
561 563
562 /* Bit 12 of 8000_0007 edx is accumulated power mechanism. */ 564 /* Bit 12 of 8000_0007 edx is accumulated power mechanism. */
diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index 1661d8ec9280..2c234a6d94c4 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
@@ -1,5 +1,5 @@
1#include <linux/bitops.h> 1
2#include <linux/kernel.h> 2#include <linux/sched.h>
3 3
4#include <asm/cpufeature.h> 4#include <asm/cpufeature.h>
5#include <asm/e820.h> 5#include <asm/e820.h>
@@ -104,6 +104,8 @@ static void early_init_centaur(struct cpuinfo_x86 *c)
104#ifdef CONFIG_X86_64 104#ifdef CONFIG_X86_64
105 set_cpu_cap(c, X86_FEATURE_SYSENTER32); 105 set_cpu_cap(c, X86_FEATURE_SYSENTER32);
106#endif 106#endif
107
108 clear_sched_clock_stable();
107} 109}
108 110
109static void init_centaur(struct cpuinfo_x86 *c) 111static void init_centaur(struct cpuinfo_x86 *c)
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index ede03e849a8b..3bcf6d880611 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -83,6 +83,7 @@ static void default_init(struct cpuinfo_x86 *c)
83 strcpy(c->x86_model_id, "386"); 83 strcpy(c->x86_model_id, "386");
84 } 84 }
85#endif 85#endif
86 clear_sched_clock_stable();
86} 87}
87 88
88static const struct cpu_dev default_cpu = { 89static const struct cpu_dev default_cpu = {
@@ -1056,6 +1057,8 @@ static void identify_cpu(struct cpuinfo_x86 *c)
1056 */ 1057 */
1057 if (this_cpu->c_init) 1058 if (this_cpu->c_init)
1058 this_cpu->c_init(c); 1059 this_cpu->c_init(c);
1060 else
1061 clear_sched_clock_stable();
1059 1062
1060 /* Disable the PN if appropriate */ 1063 /* Disable the PN if appropriate */
1061 squash_the_stupid_serial_number(c); 1064 squash_the_stupid_serial_number(c);
diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c
index bd9dcd6b712d..47416f959a48 100644
--- a/arch/x86/kernel/cpu/cyrix.c
+++ b/arch/x86/kernel/cpu/cyrix.c
@@ -9,6 +9,7 @@
9#include <asm/pci-direct.h> 9#include <asm/pci-direct.h>
10#include <asm/tsc.h> 10#include <asm/tsc.h>
11#include <asm/cpufeature.h> 11#include <asm/cpufeature.h>
12#include <linux/sched.h>
12 13
13#include "cpu.h" 14#include "cpu.h"
14 15
@@ -183,6 +184,7 @@ static void early_init_cyrix(struct cpuinfo_x86 *c)
183 set_cpu_cap(c, X86_FEATURE_CYRIX_ARR); 184 set_cpu_cap(c, X86_FEATURE_CYRIX_ARR);
184 break; 185 break;
185 } 186 }
187 clear_sched_clock_stable();
186} 188}
187 189
188static void init_cyrix(struct cpuinfo_x86 *c) 190static void init_cyrix(struct cpuinfo_x86 *c)
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 203f860d2ab3..026c728d6ba7 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -119,8 +119,10 @@ static void early_init_intel(struct cpuinfo_x86 *c)
119 if (c->x86_power & (1 << 8)) { 119 if (c->x86_power & (1 << 8)) {
120 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); 120 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
121 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); 121 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
122 if (!check_tsc_unstable()) 122 if (check_tsc_unstable())
123 set_sched_clock_stable(); 123 clear_sched_clock_stable();
124 } else {
125 clear_sched_clock_stable();
124 } 126 }
125 127
126 /* Penwell and Cloverview have the TSC which doesn't sleep on S3 */ 128 /* Penwell and Cloverview have the TSC which doesn't sleep on S3 */
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c
index 34178564be2a..c1ea5b999839 100644
--- a/arch/x86/kernel/cpu/transmeta.c
+++ b/arch/x86/kernel/cpu/transmeta.c
@@ -1,4 +1,5 @@
1#include <linux/kernel.h> 1#include <linux/kernel.h>
2#include <linux/sched.h>
2#include <linux/mm.h> 3#include <linux/mm.h>
3#include <asm/cpufeature.h> 4#include <asm/cpufeature.h>
4#include <asm/msr.h> 5#include <asm/msr.h>
@@ -14,6 +15,8 @@ static void early_init_transmeta(struct cpuinfo_x86 *c)
14 if (xlvl >= 0x80860001) 15 if (xlvl >= 0x80860001)
15 c->x86_capability[CPUID_8086_0001_EDX] = cpuid_edx(0x80860001); 16 c->x86_capability[CPUID_8086_0001_EDX] = cpuid_edx(0x80860001);
16 } 17 }
18
19 clear_sched_clock_stable();
17} 20}
18 21
19static void init_transmeta(struct cpuinfo_x86 *c) 22static void init_transmeta(struct cpuinfo_x86 *c)