diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/cpufeature.h | 5 | ||||
-rw-r--r-- | arch/x86/include/uapi/asm/msr-index.h | 41 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/scattered.c | 5 |
3 files changed, 51 insertions, 0 deletions
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index 0bb1335313b2..aede2c347bde 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h | |||
@@ -189,6 +189,11 @@ | |||
189 | #define X86_FEATURE_DTHERM ( 7*32+ 7) /* Digital Thermal Sensor */ | 189 | #define X86_FEATURE_DTHERM ( 7*32+ 7) /* Digital Thermal Sensor */ |
190 | #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */ | 190 | #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */ |
191 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ | 191 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ |
192 | #define X86_FEATURE_HWP ( 7*32+ 10) /* "hwp" Intel HWP */ | ||
193 | #define X86_FEATURE_HWP_NOITFY ( 7*32+ 11) /* Intel HWP_NOTIFY */ | ||
194 | #define X86_FEATURE_HWP_ACT_WINDOW ( 7*32+ 12) /* Intel HWP_ACT_WINDOW */ | ||
195 | #define X86_FEATURE_HWP_EPP ( 7*32+13) /* Intel HWP_EPP */ | ||
196 | #define X86_FEATURE_HWP_PKG_REQ ( 7*32+14) /* Intel HWP_PKG_REQ */ | ||
192 | 197 | ||
193 | /* Virtualization flags: Linux defined, word 8 */ | 198 | /* Virtualization flags: Linux defined, word 8 */ |
194 | #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ | 199 | #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ |
diff --git a/arch/x86/include/uapi/asm/msr-index.h b/arch/x86/include/uapi/asm/msr-index.h index e21331ce368f..62838e54947d 100644 --- a/arch/x86/include/uapi/asm/msr-index.h +++ b/arch/x86/include/uapi/asm/msr-index.h | |||
@@ -152,6 +152,45 @@ | |||
152 | #define MSR_CC6_DEMOTION_POLICY_CONFIG 0x00000668 | 152 | #define MSR_CC6_DEMOTION_POLICY_CONFIG 0x00000668 |
153 | #define MSR_MC6_DEMOTION_POLICY_CONFIG 0x00000669 | 153 | #define MSR_MC6_DEMOTION_POLICY_CONFIG 0x00000669 |
154 | 154 | ||
155 | /* Hardware P state interface */ | ||
156 | #define MSR_PPERF 0x0000064e | ||
157 | #define MSR_PERF_LIMIT_REASONS 0x0000064f | ||
158 | #define MSR_PM_ENABLE 0x00000770 | ||
159 | #define MSR_HWP_CAPABILITIES 0x00000771 | ||
160 | #define MSR_HWP_REQUEST_PKG 0x00000772 | ||
161 | #define MSR_HWP_INTERRUPT 0x00000773 | ||
162 | #define MSR_HWP_REQUEST 0x00000774 | ||
163 | #define MSR_HWP_STATUS 0x00000777 | ||
164 | |||
165 | /* CPUID.6.EAX */ | ||
166 | #define HWP_BASE_BIT (1<<7) | ||
167 | #define HWP_NOTIFICATIONS_BIT (1<<8) | ||
168 | #define HWP_ACTIVITY_WINDOW_BIT (1<<9) | ||
169 | #define HWP_ENERGY_PERF_PREFERENCE_BIT (1<<10) | ||
170 | #define HWP_PACKAGE_LEVEL_REQUEST_BIT (1<<11) | ||
171 | |||
172 | /* IA32_HWP_CAPABILITIES */ | ||
173 | #define HWP_HIGHEST_PERF(x) (x & 0xff) | ||
174 | #define HWP_GUARANTEED_PERF(x) ((x & (0xff << 8)) >>8) | ||
175 | #define HWP_MOSTEFFICIENT_PERF(x) ((x & (0xff << 16)) >>16) | ||
176 | #define HWP_LOWEST_PERF(x) ((x & (0xff << 24)) >>24) | ||
177 | |||
178 | /* IA32_HWP_REQUEST */ | ||
179 | #define HWP_MIN_PERF(x) (x & 0xff) | ||
180 | #define HWP_MAX_PERF(x) ((x & 0xff) << 8) | ||
181 | #define HWP_DESIRED_PERF(x) ((x & 0xff) << 16) | ||
182 | #define HWP_ENERGY_PERF_PREFERENCE(x) ((x & 0xff) << 24) | ||
183 | #define HWP_ACTIVITY_WINDOW(x) ((x & 0xff3) << 32) | ||
184 | #define HWP_PACKAGE_CONTROL(x) ((x & 0x1) << 42) | ||
185 | |||
186 | /* IA32_HWP_STATUS */ | ||
187 | #define HWP_GUARANTEED_CHANGE(x) (x & 0x1) | ||
188 | #define HWP_EXCURSION_TO_MINIMUM(x) (x & 0x4) | ||
189 | |||
190 | /* IA32_HWP_INTERRUPT */ | ||
191 | #define HWP_CHANGE_TO_GUARANTEED_INT(x) (x & 0x1) | ||
192 | #define HWP_EXCURSION_TO_MINIMUM_INT(x) (x & 0x2) | ||
193 | |||
155 | #define MSR_AMD64_MC0_MASK 0xc0010044 | 194 | #define MSR_AMD64_MC0_MASK 0xc0010044 |
156 | 195 | ||
157 | #define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4*(x)) | 196 | #define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4*(x)) |
@@ -345,6 +384,8 @@ | |||
345 | 384 | ||
346 | #define MSR_IA32_TEMPERATURE_TARGET 0x000001a2 | 385 | #define MSR_IA32_TEMPERATURE_TARGET 0x000001a2 |
347 | 386 | ||
387 | #define MSR_MISC_PWR_MGMT 0x000001aa | ||
388 | |||
348 | #define MSR_IA32_ENERGY_PERF_BIAS 0x000001b0 | 389 | #define MSR_IA32_ENERGY_PERF_BIAS 0x000001b0 |
349 | #define ENERGY_PERF_BIAS_PERFORMANCE 0 | 390 | #define ENERGY_PERF_BIAS_PERFORMANCE 0 |
350 | #define ENERGY_PERF_BIAS_NORMAL 6 | 391 | #define ENERGY_PERF_BIAS_NORMAL 6 |
diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index 4a8013d55947..60639093d536 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c | |||
@@ -36,6 +36,11 @@ void init_scattered_cpuid_features(struct cpuinfo_x86 *c) | |||
36 | { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006, 0 }, | 36 | { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006, 0 }, |
37 | { X86_FEATURE_PLN, CR_EAX, 4, 0x00000006, 0 }, | 37 | { X86_FEATURE_PLN, CR_EAX, 4, 0x00000006, 0 }, |
38 | { X86_FEATURE_PTS, CR_EAX, 6, 0x00000006, 0 }, | 38 | { X86_FEATURE_PTS, CR_EAX, 6, 0x00000006, 0 }, |
39 | { X86_FEATURE_HWP, CR_EAX, 7, 0x00000006, 0 }, | ||
40 | { X86_FEATURE_HWP_NOITFY, CR_EAX, 8, 0x00000006, 0 }, | ||
41 | { X86_FEATURE_HWP_ACT_WINDOW, CR_EAX, 9, 0x00000006, 0 }, | ||
42 | { X86_FEATURE_HWP_EPP, CR_EAX,10, 0x00000006, 0 }, | ||
43 | { X86_FEATURE_HWP_PKG_REQ, CR_EAX,11, 0x00000006, 0 }, | ||
39 | { X86_FEATURE_APERFMPERF, CR_ECX, 0, 0x00000006, 0 }, | 44 | { X86_FEATURE_APERFMPERF, CR_ECX, 0, 0x00000006, 0 }, |
40 | { X86_FEATURE_EPB, CR_ECX, 3, 0x00000006, 0 }, | 45 | { X86_FEATURE_EPB, CR_ECX, 3, 0x00000006, 0 }, |
41 | { X86_FEATURE_HW_PSTATE, CR_EDX, 7, 0x80000007, 0 }, | 46 | { X86_FEATURE_HW_PSTATE, CR_EDX, 7, 0x80000007, 0 }, |