From: Jaswinder Singh Rajput <jaswinder@kernel.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@kernel.org>,
Robert Richter <robert.richter@amd.com>,
Dave Jones <davej@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
x86 maintainers <x86@kernel.org>
Subject: [PATCH 5/10 -tip] x86: check_powernow() for K8 and later user of Advanced Power Management features
Date: Tue, 12 May 2009 21:10:49 +0530 [thread overview]
Message-ID: <1242142849.2547.19.camel@ht.satnam> (raw)
In-Reply-To: <1242142807.2547.18.camel@ht.satnam>
use X86_FEATURE_FID, X86_FEATURE_VID and X86_FEATURE_HWPSTATE
to determine K8 and later PowerNOW.
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
---
arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 16 ++++++++--------
arch/x86/kernel/cpu/cpufreq/powernow-k8.h | 4 ----
2 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
index 4709ead..b3f4ec8 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
@@ -512,8 +512,9 @@ static int core_voltage_post_transition(struct powernow_k8_data *data,
static int check_supported_cpu(unsigned int cpu)
{
+ struct cpuinfo_x86 *c = &cpu_data(cpu);
cpumask_t oldmask;
- u32 eax, ebx, ecx, edx;
+ u32 eax;
unsigned int rc = 0;
oldmask = current->cpus_allowed;
@@ -540,23 +541,22 @@ static int check_supported_cpu(unsigned int cpu)
goto out;
}
- eax = cpuid_eax(CPUID_GET_MAX_CAPABILITIES);
- if (eax < CPUID_FREQ_VOLT_CAPABILITIES) {
+ /* Advanced Power Management capabilities */
+ if (c->x86_capability[9]) {
printk(KERN_INFO PFX
"No frequency change capabilities detected\n");
goto out;
}
- cpuid(CPUID_FREQ_VOLT_CAPABILITIES, &eax, &ebx, &ecx, &edx);
- if ((edx & P_STATE_TRANSITION_CAPABLE)
- != P_STATE_TRANSITION_CAPABLE) {
+ /* check for frequncy and volatage ID control support */
+ if (!cpu_has(c, X86_FEATURE_FID) &&
+ !cpu_has(c, X86_FEATURE_VID)) {
printk(KERN_INFO PFX
"Power state transitions not supported\n");
goto out;
}
} else { /* must be a HW Pstate capable processor */
- cpuid(CPUID_FREQ_VOLT_CAPABILITIES, &eax, &ebx, &ecx, &edx);
- if ((edx & USE_HW_PSTATE) == USE_HW_PSTATE)
+ if (cpu_has(c, X86_FEATURE_HWPSTATE))
cpu_family = CPU_HW_PSTATE;
else
goto out;
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
index 6c6698f..4dfe414 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
@@ -64,9 +64,6 @@ struct powernow_k8_data {
#define CPUID_XMOD_REV_MASK 0x000c0000
#define CPUID_XFAM_10H 0x00100000 /* family 0x10 */
#define CPUID_USE_XFAM_XMOD 0x00000f00
-#define CPUID_GET_MAX_CAPABILITIES 0x80000000
-#define CPUID_FREQ_VOLT_CAPABILITIES 0x80000007
-#define P_STATE_TRANSITION_CAPABLE 6
/* Model Specific Registers for p-state transitions. MSRs are 64-bit. For */
/* writes (wrmsr - opcode 0f 30), the register number is placed in ecx, and */
@@ -101,7 +98,6 @@ struct powernow_k8_data {
/* Hardware Pstate _PSS and MSR definitions */
-#define USE_HW_PSTATE 0x00000080
#define HW_PSTATE_MASK 0x00000007
#define HW_PSTATE_VALID_MASK 0x80000000
#define HW_PSTATE_MAX_MASK 0x000000f0
--
1.6.0.6
next prev parent reply other threads:[~2009-05-12 15:49 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-12 15:35 [git-pull -tip][PATCH 0/10] few cpufeature additions and users Jaswinder Singh Rajput
2009-05-12 15:37 ` [PATCH 1/10 -tip] x86: Add cpufeature for Processor Name Jaswinder Singh Rajput
2009-05-12 15:38 ` [PATCH 2/10 -tip] x86: get_model_name() user of X86_FEATURE_PNAME Jaswinder Singh Rajput
2009-05-12 15:39 ` [PATCH 3/10 -tip] x86: Add cpufeatures for Advanced Power Management Jaswinder Singh Rajput
2009-05-12 15:40 ` [PATCH 4/10 -tip] x86: check_powernow() for K7 user of Advanced Power Management features Jaswinder Singh Rajput
2009-05-12 15:40 ` Jaswinder Singh Rajput [this message]
2009-05-12 15:41 ` [PATCH 6/10 -tip] x86: early_init_intel() " Jaswinder Singh Rajput
2009-05-12 15:42 ` [PATCH 7/10 -tip] x86: early_init_amd() " Jaswinder Singh Rajput
2009-05-12 15:43 ` [PATCH 8/10 -tip] x86: Add cpufeature for Microcode update Jaswinder Singh Rajput
2009-05-12 15:44 ` [PATCH 9/10 -tip] x86: collect_cpu_info() of Intel user of Microcode feature Jaswinder Singh Rajput
2009-05-12 15:44 ` [PATCH 10/10 -tip] x86: collect_cpu_info() of AMD " Jaswinder Singh Rajput
2009-05-13 5:47 ` Andreas Herrmann
2009-05-13 7:20 ` Jaswinder Singh Rajput
2009-05-13 5:46 ` [PATCH 8/10 -tip] x86: Add cpufeature for Microcode update Andreas Herrmann
2009-05-13 7:18 ` Jaswinder Singh Rajput
2009-05-13 6:18 ` [PATCH 6/10 -tip] x86: early_init_intel() user of Advanced Power Management features Andreas Herrmann
2009-05-13 7:20 ` Jaswinder Singh Rajput
2009-05-12 17:48 ` [PATCH 5/10 -tip] x86: check_powernow() for K8 and later " Ingo Molnar
2009-05-12 18:45 ` Jaswinder Singh Rajput
2009-05-13 6:36 ` Andreas Herrmann
2009-05-12 19:07 ` [PATCH 4/10 -tip] x86: check_powernow() for K7 " Jaswinder Singh Rajput
2009-05-12 19:06 ` [PATCH 3/10 -tip] x86: Add cpufeatures for Advanced Power Management Jaswinder Singh Rajput
2009-05-12 21:04 ` Thomas Gleixner
2009-05-13 8:57 ` Jaswinder Singh Rajput
2009-05-15 13:47 ` Jaswinder Singh Rajput
2009-05-17 12:17 ` Thomas Gleixner
2009-05-17 14:18 ` Jaswinder Singh Rajput
2009-05-19 15:01 ` Jaswinder Singh Rajput
2009-05-19 16:41 ` H. Peter Anvin
2009-05-20 7:15 ` Jaswinder Singh Rajput
2009-05-20 7:23 ` Jaswinder Singh Rajput
2009-05-20 18:30 ` H. Peter Anvin
2009-05-21 5:09 ` Jaswinder Singh Rajput
2009-05-13 6:27 ` Andreas Herrmann
2009-05-21 6:14 ` H. Peter Anvin
2009-05-21 6:11 ` [PATCH 1/10 -tip] x86: Add cpufeature for Processor Name H. Peter Anvin
2009-05-21 7:38 ` Jaswinder Singh Rajput
2009-05-21 20:09 ` H. Peter Anvin
2009-05-12 20:15 ` [git-pull -tip][PATCH 0/10] few cpufeature additions and users Jaswinder Singh Rajput
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1242142849.2547.19.camel@ht.satnam \
--to=jaswinder@kernel.org \
--cc=davej@redhat.com \
--cc=hpa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=robert.richter@amd.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox