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: Re: [PATCH 5/10 -tip] x86: check_powernow() for K8 and later user of Advanced Power Management features
Date: Wed, 13 May 2009 00:15:26 +0530 [thread overview]
Message-ID: <1242153926.2492.49.camel@ht.satnam> (raw)
In-Reply-To: <20090512174848.GA3313@elte.hu>
On Tue, 2009-05-12 at 19:48 +0200, Ingo Molnar wrote:
> * Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:
>
> > - 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;
> > }
>
> How is the new check equivalent to the old one? It isnt and this is
> a bug.
>
> Also, open-coding x86_capability[9] like that is quite unclean. Were
> we ever to reorder those bits internally, this could would break.
>
> But i see what you are trying to do. A better method might be to add
> a new helper:
>
> +#define X86_FEATURE_TS (9*32+ 0) /* Temperatue sensor */
> +#define X86_FEATURE_FID (9*32+ 1) /* Frequency ID control */
> +#define X86_FEATURE_VID (9*32+ 2) /* Voltage ID control */
> +#define X86_FEATURE_TTP (9*32+ 3) /* Thermal trip */
> +#define X86_FEATURE_HTC (9*32+ 4) /* Hardware thermal control */
> +#define X86_FEATURE_STC (9*32+ 5) /* Software thermal control */
> +#define X86_FEATURE_100MHZSTEPS (9*32+ 6) /* 100 MHz multiplier control */
> +#define X86_FEATURE_HWPSTATE (9*32+ 7) /* Hardware P-State control */
> +#define X86_FEATURE_CONSTANT_TSC (9*32+ 8) /* Constant rate TSC ticks */
>
> ... to represent the 'is any of these set' property.
>
Yes, I was also thinking about adding this helper cpufeature, may be
that's why I made above mistake ;-)
> [ btw., there's a typo in the X86_FEATURE_TS comment above ]
>
Ok I will send updated patches and new pull request :-)
[PATCH-tip] x86: check_powernow() for K8 and later user of Advanced Power Management features
use X86_FEATURE_POWER_MGMT, 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..c9869fd 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 (!cpu_has(c, X86_FEATURE_POWER_MGMT)) {
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 18:45 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 ` [PATCH 5/10 -tip] x86: check_powernow() for K8 and later " Jaswinder Singh Rajput
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 [this message]
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=1242153926.2492.49.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