* [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
@ 2007-04-06 10:19 Adrian Bunk
2007-04-06 10:29 ` Dave Jones
0 siblings, 1 reply; 15+ messages in thread
From: Adrian Bunk @ 2007-04-06 10:19 UTC (permalink / raw)
To: davej; +Cc: cpufreq, linux-kernel, Venkatesh Pallipadi, lenb, linux-acpi
This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
---
Documentation/feature-removal-schedule.txt | 23 -
arch/i386/kernel/cpu/cpufreq/Kconfig | 18
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280 --------------
arch/x86_64/kernel/cpufreq/Kconfig | 6
4 files changed, 21 insertions(+), 306 deletions(-)
--- linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old 2006-12-01 07:23:38.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-12-01 07:24:02.000000000 +0100
@@ -109,7 +109,7 @@
config X86_SPEEDSTEP_CENTRINO
tristate "Intel Enhanced SpeedStep"
select CPU_FREQ_TABLE
- select X86_SPEEDSTEP_CENTRINO_TABLE if (!X86_SPEEDSTEP_CENTRINO_ACPI)
+ select X86_SPEEDSTEP_CENTRINO_TABLE
help
This adds the CPUFreq driver for Enhanced SpeedStep enabled
mobile CPUs. This means Intel Pentium M (Centrino) CPUs. However,
@@ -121,20 +121,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool "Use ACPI tables to decode valid frequency/voltage (deprecated)"
- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
- help
- This is deprecated and this functionality is now merged into
- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
- speedstep_centrino.
- Use primarily the information provided in the BIOS ACPI tables
- to determine valid CPU frequency and voltage pairings. It is
- required for the driver to work on non-Banias CPUs.
-
- If in doubt, say Y.
-
config X86_SPEEDSTEP_CENTRINO_TABLE
bool "Built-in tables for Banias CPUs"
depends on X86_SPEEDSTEP_CENTRINO
@@ -222,7 +207,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig.old 2006-12-01 07:24:11.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig 2006-12-01 07:24:21.000000000 +0100
@@ -42,10 +42,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool
- depends on X86_SPEEDSTEP_CENTRINO
-
config X86_ACPI_CPUFREQ
tristate "ACPI Processor P-States driver"
select CPU_FREQ_TABLE
@@ -65,7 +60,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
@@ -21,12 +21,6 @@
#include <linux/delay.h>
#include <linux/compiler.h>
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-#include <linux/acpi.h>
-#include <linux/dmi.h>
-#include <acpi/processor.h>
-#endif
-
#include <asm/msr.h>
#include <asm/processor.h>
#include <asm/cpufeature.h>
@@ -257,9 +251,7 @@
/* Matched a non-match */
dprintk("no table support for CPU model \"%s\"\n",
cpu->x86_model_id);
-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- dprintk("try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
-#endif
+ dprintk("try using the acpi-cpufreq driver\n");
return -ENOENT;
}
@@ -346,213 +338,6 @@
}
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-
-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
-
-/*
- * centrino_cpu_early_init_acpi - Do the preregistering with ACPI P-States
- * library
- *
- * Before doing the actual init, we need to do _PSD related setup whenever
- * supported by the BIOS. These are handled by this early_init routine.
- */
-static int centrino_cpu_early_init_acpi(void)
-{
- unsigned int i, j;
- struct acpi_processor_performance *data;
-
- for_each_possible_cpu(i) {
- data = kzalloc(sizeof(struct acpi_processor_performance),
- GFP_KERNEL);
- if (!data) {
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
- return (-ENOMEM);
- }
- acpi_perf_data[i] = data;
- }
-
- acpi_processor_preregister_performance(acpi_perf_data);
- return 0;
-}
-
-
-#ifdef CONFIG_SMP
-/*
- * Some BIOSes do SW_ANY coordination internally, either set it up in hw
- * or do it in BIOS firmware and won't inform about it to OS. If not
- * detected, this has a side effect of making CPU run at a different speed
- * than OS intended it to run at. Detect it and handle it cleanly.
- */
-static int bios_with_sw_any_bug;
-static int sw_any_bug_found(struct dmi_system_id *d)
-{
- bios_with_sw_any_bug = 1;
- return 0;
-}
-
-static struct dmi_system_id sw_any_bug_dmi_table[] = {
- {
- .callback = sw_any_bug_found,
- .ident = "Supermicro Server X6DLP",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
- },
- },
- { }
-};
-#endif
-
-/*
- * centrino_cpu_init_acpi - register with ACPI P-States library
- *
- * Register with the ACPI P-States library (part of drivers/acpi/processor.c)
- * in order to determine correct frequency and voltage pairings by reading
- * the _PSS of the ACPI DSDT or SSDT tables.
- */
-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
-{
- unsigned long cur_freq;
- int result = 0, i;
- unsigned int cpu = policy->cpu;
- struct acpi_processor_performance *p;
-
- p = acpi_perf_data[cpu];
-
- /* register with ACPI core */
- if (acpi_processor_register_performance(p, cpu)) {
- dprintk(PFX "obtaining ACPI data failed\n");
- return -EIO;
- }
-
- policy->shared_type = p->shared_type;
- /*
- * Will let policy->cpus know about dependency only when software
- * coordination is required.
- */
- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
- policy->cpus = p->shared_cpu_map;
- }
-
-#ifdef CONFIG_SMP
- dmi_check_system(sw_any_bug_dmi_table);
- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
- policy->cpus = cpu_core_map[cpu];
- }
-#endif
-
- /* verify the acpi_data */
- if (p->state_count <= 1) {
- dprintk("No P-States\n");
- result = -ENODEV;
- goto err_unreg;
- }
-
- if ((p->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) ||
- (p->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
- dprintk("Invalid control/status registers (%x - %x)\n",
- p->control_register.space_id, p->status_register.space_id);
- result = -EIO;
- goto err_unreg;
- }
-
- for (i=0; i<p->state_count; i++) {
- if ((p->states[i].control & INTEL_MSR_RANGE) !=
- (p->states[i].status & INTEL_MSR_RANGE)) {
- dprintk("Different MSR bits in control (%llu) and status (%llu)\n",
- p->states[i].control, p->states[i].status);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (!p->states[i].core_frequency) {
- dprintk("Zero core frequency for state %u\n", i);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (p->states[i].core_frequency > p->states[0].core_frequency) {
- dprintk("P%u has larger frequency (%llu) than P0 (%llu), skipping\n", i,
- p->states[i].core_frequency, p->states[0].core_frequency);
- p->states[i].core_frequency = 0;
- continue;
- }
- }
-
- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model), GFP_KERNEL);
- if (!centrino_model[cpu]) {
- result = -ENOMEM;
- goto err_unreg;
- }
-
- centrino_model[cpu]->model_name=NULL;
- centrino_model[cpu]->max_freq = p->states[0].core_frequency * 1000;
- centrino_model[cpu]->op_points = kmalloc(sizeof(struct cpufreq_frequency_table) *
- (p->state_count + 1), GFP_KERNEL);
- if (!centrino_model[cpu]->op_points) {
- result = -ENOMEM;
- goto err_kfree;
- }
-
- for (i=0; i<p->state_count; i++) {
- centrino_model[cpu]->op_points[i].index = p->states[i].control & INTEL_MSR_RANGE;
- centrino_model[cpu]->op_points[i].frequency = p->states[i].core_frequency * 1000;
- dprintk("adding state %i with frequency %u and control value %04x\n",
- i, centrino_model[cpu]->op_points[i].frequency, centrino_model[cpu]->op_points[i].index);
- }
- centrino_model[cpu]->op_points[p->state_count].frequency = CPUFREQ_TABLE_END;
-
- cur_freq = get_cur_freq(cpu);
-
- for (i=0; i<p->state_count; i++) {
- if (!p->states[i].core_frequency) {
- dprintk("skipping state %u\n", i);
- centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
- continue;
- }
-
- if (extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
- (centrino_model[cpu]->op_points[i].frequency)) {
- dprintk("Invalid encoded frequency (%u vs. %u)\n",
- extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
- centrino_model[cpu]->op_points[i].frequency);
- result = -EINVAL;
- goto err_kfree_all;
- }
-
- if (cur_freq == centrino_model[cpu]->op_points[i].frequency)
- p->state = i;
- }
-
- /* notify BIOS that we exist */
- acpi_processor_notify_smm(THIS_MODULE);
- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
- "config is deprecated.\n "
- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
-
- return 0;
-
- err_kfree_all:
- kfree(centrino_model[cpu]->op_points);
- err_kfree:
- kfree(centrino_model[cpu]);
- err_unreg:
- acpi_processor_unregister_performance(p, cpu);
- dprintk(PFX "invalid ACPI data\n");
- return (result);
-}
-#else
-static inline int centrino_cpu_init_acpi(struct cpufreq_policy *policy) { return -ENODEV; }
-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
-#endif
-
static int centrino_cpu_init(struct cpufreq_policy *policy)
{
struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
@@ -568,27 +353,25 @@
if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
- if (centrino_cpu_init_acpi(policy)) {
- if (policy->cpu != 0)
- return -ENODEV;
+ if (policy->cpu != 0)
+ return -ENODEV;
- for (i = 0; i < N_IDS; i++)
- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
- break;
-
- if (i != N_IDS)
- centrino_cpu[policy->cpu] = &cpu_ids[i];
-
- if (!centrino_cpu[policy->cpu]) {
- dprintk("found unsupported CPU with "
- "Enhanced SpeedStep: send /proc/cpuinfo to "
- MAINTAINER "\n");
- return -ENODEV;
- }
+ for (i = 0; i < N_IDS; i++)
+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
+ break;
- if (centrino_cpu_init_table(policy)) {
- return -ENODEV;
- }
+ if (i != N_IDS)
+ centrino_cpu[policy->cpu] = &cpu_ids[i];
+
+ if (!centrino_cpu[policy->cpu]) {
+ dprintk("found unsupported CPU with "
+ "Enhanced SpeedStep: send /proc/cpuinfo to "
+ MAINTAINER "\n");
+ return -ENODEV;
+ }
+
+ if (centrino_cpu_init_table(policy)) {
+ return -ENODEV;
}
/* Check to see if Enhanced SpeedStep is enabled, and try to
@@ -634,20 +417,6 @@
cpufreq_frequency_table_put_attr(cpu);
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- if (!centrino_model[cpu]->model_name) {
- static struct acpi_processor_performance *p;
-
- if (acpi_perf_data[cpu]) {
- p = acpi_perf_data[cpu];
- dprintk("unregistering and freeing ACPI data\n");
- acpi_processor_unregister_performance(p, cpu);
- kfree(centrino_model[cpu]->op_points);
- kfree(centrino_model[cpu]);
- }
- }
-#endif
-
centrino_model[cpu] = NULL;
return 0;
@@ -841,25 +610,12 @@
if (!cpu_has(cpu, X86_FEATURE_EST))
return -ENODEV;
- centrino_cpu_early_init_acpi();
-
return cpufreq_register_driver(¢rino_driver);
}
static void __exit centrino_exit(void)
{
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- unsigned int j;
-#endif
-
cpufreq_unregister_driver(¢rino_driver);
-
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
-#endif
}
MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
--- linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt.old 2007-02-17 23:33:09.000000000 +0100
+++ linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt 2007-02-17 23:33:46.000000000 +0100
@@ -214,28 +214,6 @@
---------------------------
-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
-When: December 2006
-Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
- functionally very much similar. They talk to ACPI in same way. Only
- difference between them is the way they do frequency transitions.
- One uses MSRs and the other one uses IO ports. Functionaliy of
- speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
- That means one common driver will support all Intel Enhanced Speedstep
- capable CPUs. That means less confusion over name of
- speedstep-centrino driver (with that driver supposed to be used on
- non-centrino platforms). That means less duplication of code and
- less maintenance effort and no possibility of these two drivers
- going out of sync.
- Current users of speedstep_centrino with ACPI hooks are requested to
- switch over to acpi-cpufreq driver. speedstep-centrino will continue
- to work using older non-ACPI static table based scheme even after this
- date.
-
-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
----------------------------
-
What: /sys/firmware/acpi/namespace
When: 2.6.21
Why: The ACPI namespace is effectively the symbol list for
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-04-06 10:19 [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI Adrian Bunk
@ 2007-04-06 10:29 ` Dave Jones
2007-04-06 10:38 ` Robert P. J. Day
0 siblings, 1 reply; 15+ messages in thread
From: Dave Jones @ 2007-04-06 10:29 UTC (permalink / raw)
To: Adrian Bunk
Cc: davej, cpufreq, linux-kernel, Venkatesh Pallipadi, lenb,
linux-acpi
On Fri, Apr 06, 2007 at 12:19:28PM +0200, Adrian Bunk wrote:
> This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
>
> Signed-off-by: Adrian Bunk <bunk@stusta.de>
> Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
lets kill this in 2.6.22
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-04-06 10:29 ` Dave Jones
@ 2007-04-06 10:38 ` Robert P. J. Day
2007-04-06 10:46 ` Dave Jones
0 siblings, 1 reply; 15+ messages in thread
From: Robert P. J. Day @ 2007-04-06 10:38 UTC (permalink / raw)
To: Dave Jones
Cc: Adrian Bunk, davej, cpufreq, linux-kernel, Venkatesh Pallipadi,
lenb, linux-acpi
On Fri, 6 Apr 2007, Dave Jones wrote:
> On Fri, Apr 06, 2007 at 12:19:28PM +0200, Adrian Bunk wrote:
> > This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
> >
> > Signed-off-by: Adrian Bunk <bunk@stusta.de>
> > Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
>
> lets kill this in 2.6.22
given that there's no way this is going to make it into 2.6.21, isn't
that what adrian is proposing here?
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-04-06 10:38 ` Robert P. J. Day
@ 2007-04-06 10:46 ` Dave Jones
0 siblings, 0 replies; 15+ messages in thread
From: Dave Jones @ 2007-04-06 10:46 UTC (permalink / raw)
To: Robert P. J. Day
Cc: Adrian Bunk, davej, cpufreq, linux-kernel, Venkatesh Pallipadi,
lenb, linux-acpi
On Fri, Apr 06, 2007 at 06:38:25AM -0400, Robert P. J. Day wrote:
> On Fri, 6 Apr 2007, Dave Jones wrote:
>
> > On Fri, Apr 06, 2007 at 12:19:28PM +0200, Adrian Bunk wrote:
> > > This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
> > >
> > > Signed-off-by: Adrian Bunk <bunk@stusta.de>
> > > Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> >
> > lets kill this in 2.6.22
>
> given that there's no way this is going to make it into 2.6.21, isn't
> that what adrian is proposing here?
even if so, it's a little premature. Lets get 2.6.21 out the door first.
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 15+ messages in thread
* [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
@ 2007-07-01 20:20 Adrian Bunk
2007-07-02 23:22 ` Dave Jones
0 siblings, 1 reply; 15+ messages in thread
From: Adrian Bunk @ 2007-07-01 20:20 UTC (permalink / raw)
To: Andrew Morton
Cc: Dave Jones, cpufreq, linux-kernel, Venkatesh Pallipadi, lenb,
linux-acpi
This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Dave Jones <davej@redhat.com>
---
This patch has been sent on:
- 6 Apr 2007
Documentation/feature-removal-schedule.txt | 23 -
arch/i386/kernel/cpu/cpufreq/Kconfig | 18
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280 --------------
arch/x86_64/kernel/cpufreq/Kconfig | 6
4 files changed, 21 insertions(+), 306 deletions(-)
--- linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old 2006-12-01 07:23:38.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-12-01 07:24:02.000000000 +0100
@@ -109,7 +109,7 @@
config X86_SPEEDSTEP_CENTRINO
tristate "Intel Enhanced SpeedStep"
select CPU_FREQ_TABLE
- select X86_SPEEDSTEP_CENTRINO_TABLE if (!X86_SPEEDSTEP_CENTRINO_ACPI)
+ select X86_SPEEDSTEP_CENTRINO_TABLE
help
This adds the CPUFreq driver for Enhanced SpeedStep enabled
mobile CPUs. This means Intel Pentium M (Centrino) CPUs. However,
@@ -121,20 +121,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool "Use ACPI tables to decode valid frequency/voltage (deprecated)"
- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
- help
- This is deprecated and this functionality is now merged into
- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
- speedstep_centrino.
- Use primarily the information provided in the BIOS ACPI tables
- to determine valid CPU frequency and voltage pairings. It is
- required for the driver to work on non-Banias CPUs.
-
- If in doubt, say Y.
-
config X86_SPEEDSTEP_CENTRINO_TABLE
bool "Built-in tables for Banias CPUs"
depends on X86_SPEEDSTEP_CENTRINO
@@ -222,7 +207,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig.old 2006-12-01 07:24:11.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig 2006-12-01 07:24:21.000000000 +0100
@@ -42,10 +42,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool
- depends on X86_SPEEDSTEP_CENTRINO
-
config X86_ACPI_CPUFREQ
tristate "ACPI Processor P-States driver"
select CPU_FREQ_TABLE
@@ -65,7 +60,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
@@ -21,12 +21,6 @@
#include <linux/delay.h>
#include <linux/compiler.h>
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-#include <linux/acpi.h>
-#include <linux/dmi.h>
-#include <acpi/processor.h>
-#endif
-
#include <asm/msr.h>
#include <asm/processor.h>
#include <asm/cpufeature.h>
@@ -257,9 +251,7 @@
/* Matched a non-match */
dprintk("no table support for CPU model \"%s\"\n",
cpu->x86_model_id);
-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- dprintk("try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
-#endif
+ dprintk("try using the acpi-cpufreq driver\n");
return -ENOENT;
}
@@ -346,213 +338,6 @@
}
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-
-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
-
-/*
- * centrino_cpu_early_init_acpi - Do the preregistering with ACPI P-States
- * library
- *
- * Before doing the actual init, we need to do _PSD related setup whenever
- * supported by the BIOS. These are handled by this early_init routine.
- */
-static int centrino_cpu_early_init_acpi(void)
-{
- unsigned int i, j;
- struct acpi_processor_performance *data;
-
- for_each_possible_cpu(i) {
- data = kzalloc(sizeof(struct acpi_processor_performance),
- GFP_KERNEL);
- if (!data) {
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
- return (-ENOMEM);
- }
- acpi_perf_data[i] = data;
- }
-
- acpi_processor_preregister_performance(acpi_perf_data);
- return 0;
-}
-
-
-#ifdef CONFIG_SMP
-/*
- * Some BIOSes do SW_ANY coordination internally, either set it up in hw
- * or do it in BIOS firmware and won't inform about it to OS. If not
- * detected, this has a side effect of making CPU run at a different speed
- * than OS intended it to run at. Detect it and handle it cleanly.
- */
-static int bios_with_sw_any_bug;
-static int sw_any_bug_found(struct dmi_system_id *d)
-{
- bios_with_sw_any_bug = 1;
- return 0;
-}
-
-static struct dmi_system_id sw_any_bug_dmi_table[] = {
- {
- .callback = sw_any_bug_found,
- .ident = "Supermicro Server X6DLP",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
- },
- },
- { }
-};
-#endif
-
-/*
- * centrino_cpu_init_acpi - register with ACPI P-States library
- *
- * Register with the ACPI P-States library (part of drivers/acpi/processor.c)
- * in order to determine correct frequency and voltage pairings by reading
- * the _PSS of the ACPI DSDT or SSDT tables.
- */
-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
-{
- unsigned long cur_freq;
- int result = 0, i;
- unsigned int cpu = policy->cpu;
- struct acpi_processor_performance *p;
-
- p = acpi_perf_data[cpu];
-
- /* register with ACPI core */
- if (acpi_processor_register_performance(p, cpu)) {
- dprintk(PFX "obtaining ACPI data failed\n");
- return -EIO;
- }
-
- policy->shared_type = p->shared_type;
- /*
- * Will let policy->cpus know about dependency only when software
- * coordination is required.
- */
- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
- policy->cpus = p->shared_cpu_map;
- }
-
-#ifdef CONFIG_SMP
- dmi_check_system(sw_any_bug_dmi_table);
- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
- policy->cpus = cpu_core_map[cpu];
- }
-#endif
-
- /* verify the acpi_data */
- if (p->state_count <= 1) {
- dprintk("No P-States\n");
- result = -ENODEV;
- goto err_unreg;
- }
-
- if ((p->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) ||
- (p->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
- dprintk("Invalid control/status registers (%x - %x)\n",
- p->control_register.space_id, p->status_register.space_id);
- result = -EIO;
- goto err_unreg;
- }
-
- for (i=0; i<p->state_count; i++) {
- if ((p->states[i].control & INTEL_MSR_RANGE) !=
- (p->states[i].status & INTEL_MSR_RANGE)) {
- dprintk("Different MSR bits in control (%llu) and status (%llu)\n",
- p->states[i].control, p->states[i].status);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (!p->states[i].core_frequency) {
- dprintk("Zero core frequency for state %u\n", i);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (p->states[i].core_frequency > p->states[0].core_frequency) {
- dprintk("P%u has larger frequency (%llu) than P0 (%llu), skipping\n", i,
- p->states[i].core_frequency, p->states[0].core_frequency);
- p->states[i].core_frequency = 0;
- continue;
- }
- }
-
- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model), GFP_KERNEL);
- if (!centrino_model[cpu]) {
- result = -ENOMEM;
- goto err_unreg;
- }
-
- centrino_model[cpu]->model_name=NULL;
- centrino_model[cpu]->max_freq = p->states[0].core_frequency * 1000;
- centrino_model[cpu]->op_points = kmalloc(sizeof(struct cpufreq_frequency_table) *
- (p->state_count + 1), GFP_KERNEL);
- if (!centrino_model[cpu]->op_points) {
- result = -ENOMEM;
- goto err_kfree;
- }
-
- for (i=0; i<p->state_count; i++) {
- centrino_model[cpu]->op_points[i].index = p->states[i].control & INTEL_MSR_RANGE;
- centrino_model[cpu]->op_points[i].frequency = p->states[i].core_frequency * 1000;
- dprintk("adding state %i with frequency %u and control value %04x\n",
- i, centrino_model[cpu]->op_points[i].frequency, centrino_model[cpu]->op_points[i].index);
- }
- centrino_model[cpu]->op_points[p->state_count].frequency = CPUFREQ_TABLE_END;
-
- cur_freq = get_cur_freq(cpu);
-
- for (i=0; i<p->state_count; i++) {
- if (!p->states[i].core_frequency) {
- dprintk("skipping state %u\n", i);
- centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
- continue;
- }
-
- if (extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
- (centrino_model[cpu]->op_points[i].frequency)) {
- dprintk("Invalid encoded frequency (%u vs. %u)\n",
- extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
- centrino_model[cpu]->op_points[i].frequency);
- result = -EINVAL;
- goto err_kfree_all;
- }
-
- if (cur_freq == centrino_model[cpu]->op_points[i].frequency)
- p->state = i;
- }
-
- /* notify BIOS that we exist */
- acpi_processor_notify_smm(THIS_MODULE);
- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
- "config is deprecated.\n "
- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
-
- return 0;
-
- err_kfree_all:
- kfree(centrino_model[cpu]->op_points);
- err_kfree:
- kfree(centrino_model[cpu]);
- err_unreg:
- acpi_processor_unregister_performance(p, cpu);
- dprintk(PFX "invalid ACPI data\n");
- return (result);
-}
-#else
-static inline int centrino_cpu_init_acpi(struct cpufreq_policy *policy) { return -ENODEV; }
-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
-#endif
-
static int centrino_cpu_init(struct cpufreq_policy *policy)
{
struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
@@ -568,27 +353,25 @@
if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
- if (centrino_cpu_init_acpi(policy)) {
- if (policy->cpu != 0)
- return -ENODEV;
+ if (policy->cpu != 0)
+ return -ENODEV;
- for (i = 0; i < N_IDS; i++)
- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
- break;
-
- if (i != N_IDS)
- centrino_cpu[policy->cpu] = &cpu_ids[i];
-
- if (!centrino_cpu[policy->cpu]) {
- dprintk("found unsupported CPU with "
- "Enhanced SpeedStep: send /proc/cpuinfo to "
- MAINTAINER "\n");
- return -ENODEV;
- }
+ for (i = 0; i < N_IDS; i++)
+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
+ break;
- if (centrino_cpu_init_table(policy)) {
- return -ENODEV;
- }
+ if (i != N_IDS)
+ centrino_cpu[policy->cpu] = &cpu_ids[i];
+
+ if (!centrino_cpu[policy->cpu]) {
+ dprintk("found unsupported CPU with "
+ "Enhanced SpeedStep: send /proc/cpuinfo to "
+ MAINTAINER "\n");
+ return -ENODEV;
+ }
+
+ if (centrino_cpu_init_table(policy)) {
+ return -ENODEV;
}
/* Check to see if Enhanced SpeedStep is enabled, and try to
@@ -634,20 +417,6 @@
cpufreq_frequency_table_put_attr(cpu);
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- if (!centrino_model[cpu]->model_name) {
- static struct acpi_processor_performance *p;
-
- if (acpi_perf_data[cpu]) {
- p = acpi_perf_data[cpu];
- dprintk("unregistering and freeing ACPI data\n");
- acpi_processor_unregister_performance(p, cpu);
- kfree(centrino_model[cpu]->op_points);
- kfree(centrino_model[cpu]);
- }
- }
-#endif
-
centrino_model[cpu] = NULL;
return 0;
@@ -841,25 +610,12 @@
if (!cpu_has(cpu, X86_FEATURE_EST))
return -ENODEV;
- centrino_cpu_early_init_acpi();
-
return cpufreq_register_driver(¢rino_driver);
}
static void __exit centrino_exit(void)
{
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- unsigned int j;
-#endif
-
cpufreq_unregister_driver(¢rino_driver);
-
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
-#endif
}
MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
--- linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt.old 2007-02-17 23:33:09.000000000 +0100
+++ linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt 2007-02-17 23:33:46.000000000 +0100
@@ -214,28 +214,6 @@
---------------------------
-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
-When: December 2006
-Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
- functionally very much similar. They talk to ACPI in same way. Only
- difference between them is the way they do frequency transitions.
- One uses MSRs and the other one uses IO ports. Functionaliy of
- speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
- That means one common driver will support all Intel Enhanced Speedstep
- capable CPUs. That means less confusion over name of
- speedstep-centrino driver (with that driver supposed to be used on
- non-centrino platforms). That means less duplication of code and
- less maintenance effort and no possibility of these two drivers
- going out of sync.
- Current users of speedstep_centrino with ACPI hooks are requested to
- switch over to acpi-cpufreq driver. speedstep-centrino will continue
- to work using older non-ACPI static table based scheme even after this
- date.
-
-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
----------------------------
-
What: /sys/firmware/acpi/namespace
When: 2.6.21
Why: The ACPI namespace is effectively the symbol list for
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-01 20:20 Adrian Bunk
@ 2007-07-02 23:22 ` Dave Jones
2007-07-02 23:43 ` Adrian Bunk
0 siblings, 1 reply; 15+ messages in thread
From: Dave Jones @ 2007-07-02 23:22 UTC (permalink / raw)
To: Adrian Bunk
Cc: Andrew Morton, cpufreq, linux-kernel, Venkatesh Pallipadi, lenb,
linux-acpi
On Sun, Jul 01, 2007 at 10:20:37PM +0200, Adrian Bunk wrote:
Hi Adrian,
> This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
>
> Signed-off-by: Adrian Bunk <bunk@stusta.de>
> Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> Acked-by: Dave Jones <davej@redhat.com>
Can you do this against -mm please ?
There's been some changes, which mean that your patch won't apply
without fuzz, which git-apply hates.
(19:06:04:davej@hera:cpufreq)$ git-applymbox -k ~/cf
1 patch(es) to process.
Applying '[CPUFREQ] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI'
error: patch failed: arch/x86_64/kernel/cpufreq/Kconfig:65
error: arch/x86_64/kernel/cpufreq/Kconfig: patch does not apply
Thanks,
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 15+ messages in thread
* [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-02 23:22 ` Dave Jones
@ 2007-07-02 23:43 ` Adrian Bunk
2007-07-03 0:36 ` Dave Jones
0 siblings, 1 reply; 15+ messages in thread
From: Adrian Bunk @ 2007-07-02 23:43 UTC (permalink / raw)
To: Dave Jones, Andrew Morton, cpufreq, linux-kernel,
Venkatesh Pallipadi, lenb, linux-acpi
On Mon, Jul 02, 2007 at 07:22:55PM -0400, Dave Jones wrote:
> On Sun, Jul 01, 2007 at 10:20:37PM +0200, Adrian Bunk wrote:
>
> Hi Adrian,
Hi Dave,
> > This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
> >
> > Signed-off-by: Adrian Bunk <bunk@stusta.de>
> > Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> > Acked-by: Dave Jones <davej@redhat.com>
>
> Can you do this against -mm please ?
> There's been some changes, which mean that your patch won't apply
> without fuzz, which git-apply hates.
>
> (19:06:04:davej@hera:cpufreq)$ git-applymbox -k ~/cf
> 1 patch(es) to process.
>
> Applying '[CPUFREQ] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI'
>
> error: patch failed: arch/x86_64/kernel/cpufreq/Kconfig:65
> error: arch/x86_64/kernel/cpufreq/Kconfig: patch does not apply
I made the patch against 2.6.22-rc6-mm1 (based on an older version of
this patch) but I missed the fuzz (and GNU patch defaults to accept
patches with a fuzz of 2).
Below is a version of the patch with the fuzz edited out.
> Thanks,
>
> Dave
cu
Adrian
<-- snip -->
This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Dave Jones <davej@redhat.com>
---
Documentation/feature-removal-schedule.txt | 23 -
arch/i386/kernel/cpu/cpufreq/Kconfig | 18
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280 --------------
arch/x86_64/kernel/cpufreq/Kconfig | 6
4 files changed, 21 insertions(+), 306 deletions(-)
--- linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old 2006-12-01 07:23:38.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-12-01 07:24:02.000000000 +0100
@@ -109,7 +109,7 @@
config X86_SPEEDSTEP_CENTRINO
tristate "Intel Enhanced SpeedStep"
select CPU_FREQ_TABLE
- select X86_SPEEDSTEP_CENTRINO_TABLE if (!X86_SPEEDSTEP_CENTRINO_ACPI)
+ select X86_SPEEDSTEP_CENTRINO_TABLE
help
This adds the CPUFreq driver for Enhanced SpeedStep enabled
mobile CPUs. This means Intel Pentium M (Centrino) CPUs. However,
@@ -121,20 +121,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool "Use ACPI tables to decode valid frequency/voltage (deprecated)"
- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
- help
- This is deprecated and this functionality is now merged into
- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
- speedstep_centrino.
- Use primarily the information provided in the BIOS ACPI tables
- to determine valid CPU frequency and voltage pairings. It is
- required for the driver to work on non-Banias CPUs.
-
- If in doubt, say Y.
-
config X86_SPEEDSTEP_CENTRINO_TABLE
bool "Built-in tables for Banias CPUs"
depends on X86_SPEEDSTEP_CENTRINO
@@ -222,7 +207,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig.old 2006-12-01 07:24:11.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig 2006-12-01 07:24:21.000000000 +0100
@@ -42,10 +42,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool
- depends on X86_SPEEDSTEP_CENTRINO
-
config X86_ACPI_CPUFREQ
tristate "ACPI Processor P-States driver"
select CPU_FREQ_TABLE
@@ -65,1 +60,1 @@
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
--- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
@@ -21,12 +21,6 @@
#include <linux/delay.h>
#include <linux/compiler.h>
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-#include <linux/acpi.h>
-#include <linux/dmi.h>
-#include <acpi/processor.h>
-#endif
-
#include <asm/msr.h>
#include <asm/processor.h>
#include <asm/cpufeature.h>
@@ -257,9 +251,7 @@
/* Matched a non-match */
dprintk("no table support for CPU model \"%s\"\n",
cpu->x86_model_id);
-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- dprintk("try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
-#endif
+ dprintk("try using the acpi-cpufreq driver\n");
return -ENOENT;
}
@@ -346,213 +338,6 @@
}
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-
-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
-
-/*
- * centrino_cpu_early_init_acpi - Do the preregistering with ACPI P-States
- * library
- *
- * Before doing the actual init, we need to do _PSD related setup whenever
- * supported by the BIOS. These are handled by this early_init routine.
- */
-static int centrino_cpu_early_init_acpi(void)
-{
- unsigned int i, j;
- struct acpi_processor_performance *data;
-
- for_each_possible_cpu(i) {
- data = kzalloc(sizeof(struct acpi_processor_performance),
- GFP_KERNEL);
- if (!data) {
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
- return (-ENOMEM);
- }
- acpi_perf_data[i] = data;
- }
-
- acpi_processor_preregister_performance(acpi_perf_data);
- return 0;
-}
-
-
-#ifdef CONFIG_SMP
-/*
- * Some BIOSes do SW_ANY coordination internally, either set it up in hw
- * or do it in BIOS firmware and won't inform about it to OS. If not
- * detected, this has a side effect of making CPU run at a different speed
- * than OS intended it to run at. Detect it and handle it cleanly.
- */
-static int bios_with_sw_any_bug;
-static int sw_any_bug_found(struct dmi_system_id *d)
-{
- bios_with_sw_any_bug = 1;
- return 0;
-}
-
-static struct dmi_system_id sw_any_bug_dmi_table[] = {
- {
- .callback = sw_any_bug_found,
- .ident = "Supermicro Server X6DLP",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
- },
- },
- { }
-};
-#endif
-
-/*
- * centrino_cpu_init_acpi - register with ACPI P-States library
- *
- * Register with the ACPI P-States library (part of drivers/acpi/processor.c)
- * in order to determine correct frequency and voltage pairings by reading
- * the _PSS of the ACPI DSDT or SSDT tables.
- */
-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
-{
- unsigned long cur_freq;
- int result = 0, i;
- unsigned int cpu = policy->cpu;
- struct acpi_processor_performance *p;
-
- p = acpi_perf_data[cpu];
-
- /* register with ACPI core */
- if (acpi_processor_register_performance(p, cpu)) {
- dprintk(PFX "obtaining ACPI data failed\n");
- return -EIO;
- }
-
- policy->shared_type = p->shared_type;
- /*
- * Will let policy->cpus know about dependency only when software
- * coordination is required.
- */
- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
- policy->cpus = p->shared_cpu_map;
- }
-
-#ifdef CONFIG_SMP
- dmi_check_system(sw_any_bug_dmi_table);
- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
- policy->cpus = cpu_core_map[cpu];
- }
-#endif
-
- /* verify the acpi_data */
- if (p->state_count <= 1) {
- dprintk("No P-States\n");
- result = -ENODEV;
- goto err_unreg;
- }
-
- if ((p->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) ||
- (p->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
- dprintk("Invalid control/status registers (%x - %x)\n",
- p->control_register.space_id, p->status_register.space_id);
- result = -EIO;
- goto err_unreg;
- }
-
- for (i=0; i<p->state_count; i++) {
- if ((p->states[i].control & INTEL_MSR_RANGE) !=
- (p->states[i].status & INTEL_MSR_RANGE)) {
- dprintk("Different MSR bits in control (%llu) and status (%llu)\n",
- p->states[i].control, p->states[i].status);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (!p->states[i].core_frequency) {
- dprintk("Zero core frequency for state %u\n", i);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (p->states[i].core_frequency > p->states[0].core_frequency) {
- dprintk("P%u has larger frequency (%llu) than P0 (%llu), skipping\n", i,
- p->states[i].core_frequency, p->states[0].core_frequency);
- p->states[i].core_frequency = 0;
- continue;
- }
- }
-
- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model), GFP_KERNEL);
- if (!centrino_model[cpu]) {
- result = -ENOMEM;
- goto err_unreg;
- }
-
- centrino_model[cpu]->model_name=NULL;
- centrino_model[cpu]->max_freq = p->states[0].core_frequency * 1000;
- centrino_model[cpu]->op_points = kmalloc(sizeof(struct cpufreq_frequency_table) *
- (p->state_count + 1), GFP_KERNEL);
- if (!centrino_model[cpu]->op_points) {
- result = -ENOMEM;
- goto err_kfree;
- }
-
- for (i=0; i<p->state_count; i++) {
- centrino_model[cpu]->op_points[i].index = p->states[i].control & INTEL_MSR_RANGE;
- centrino_model[cpu]->op_points[i].frequency = p->states[i].core_frequency * 1000;
- dprintk("adding state %i with frequency %u and control value %04x\n",
- i, centrino_model[cpu]->op_points[i].frequency, centrino_model[cpu]->op_points[i].index);
- }
- centrino_model[cpu]->op_points[p->state_count].frequency = CPUFREQ_TABLE_END;
-
- cur_freq = get_cur_freq(cpu);
-
- for (i=0; i<p->state_count; i++) {
- if (!p->states[i].core_frequency) {
- dprintk("skipping state %u\n", i);
- centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
- continue;
- }
-
- if (extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
- (centrino_model[cpu]->op_points[i].frequency)) {
- dprintk("Invalid encoded frequency (%u vs. %u)\n",
- extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
- centrino_model[cpu]->op_points[i].frequency);
- result = -EINVAL;
- goto err_kfree_all;
- }
-
- if (cur_freq == centrino_model[cpu]->op_points[i].frequency)
- p->state = i;
- }
-
- /* notify BIOS that we exist */
- acpi_processor_notify_smm(THIS_MODULE);
- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
- "config is deprecated.\n "
- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
-
- return 0;
-
- err_kfree_all:
- kfree(centrino_model[cpu]->op_points);
- err_kfree:
- kfree(centrino_model[cpu]);
- err_unreg:
- acpi_processor_unregister_performance(p, cpu);
- dprintk(PFX "invalid ACPI data\n");
- return (result);
-}
-#else
-static inline int centrino_cpu_init_acpi(struct cpufreq_policy *policy) { return -ENODEV; }
-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
-#endif
-
static int centrino_cpu_init(struct cpufreq_policy *policy)
{
struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
@@ -568,27 +353,25 @@
if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
- if (centrino_cpu_init_acpi(policy)) {
- if (policy->cpu != 0)
- return -ENODEV;
+ if (policy->cpu != 0)
+ return -ENODEV;
- for (i = 0; i < N_IDS; i++)
- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
- break;
-
- if (i != N_IDS)
- centrino_cpu[policy->cpu] = &cpu_ids[i];
-
- if (!centrino_cpu[policy->cpu]) {
- dprintk("found unsupported CPU with "
- "Enhanced SpeedStep: send /proc/cpuinfo to "
- MAINTAINER "\n");
- return -ENODEV;
- }
+ for (i = 0; i < N_IDS; i++)
+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
+ break;
- if (centrino_cpu_init_table(policy)) {
- return -ENODEV;
- }
+ if (i != N_IDS)
+ centrino_cpu[policy->cpu] = &cpu_ids[i];
+
+ if (!centrino_cpu[policy->cpu]) {
+ dprintk("found unsupported CPU with "
+ "Enhanced SpeedStep: send /proc/cpuinfo to "
+ MAINTAINER "\n");
+ return -ENODEV;
+ }
+
+ if (centrino_cpu_init_table(policy)) {
+ return -ENODEV;
}
/* Check to see if Enhanced SpeedStep is enabled, and try to
@@ -634,20 +417,6 @@
cpufreq_frequency_table_put_attr(cpu);
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- if (!centrino_model[cpu]->model_name) {
- static struct acpi_processor_performance *p;
-
- if (acpi_perf_data[cpu]) {
- p = acpi_perf_data[cpu];
- dprintk("unregistering and freeing ACPI data\n");
- acpi_processor_unregister_performance(p, cpu);
- kfree(centrino_model[cpu]->op_points);
- kfree(centrino_model[cpu]);
- }
- }
-#endif
-
centrino_model[cpu] = NULL;
return 0;
@@ -841,25 +610,12 @@
if (!cpu_has(cpu, X86_FEATURE_EST))
return -ENODEV;
- centrino_cpu_early_init_acpi();
-
return cpufreq_register_driver(¢rino_driver);
}
static void __exit centrino_exit(void)
{
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- unsigned int j;
-#endif
-
cpufreq_unregister_driver(¢rino_driver);
-
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
-#endif
}
MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
--- linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt.old 2007-02-17 23:33:09.000000000 +0100
+++ linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt 2007-02-17 23:33:46.000000000 +0100
@@ -214,28 +214,6 @@
---------------------------
-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
-When: December 2006
-Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
- functionally very much similar. They talk to ACPI in same way. Only
- difference between them is the way they do frequency transitions.
- One uses MSRs and the other one uses IO ports. Functionaliy of
- speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
- That means one common driver will support all Intel Enhanced Speedstep
- capable CPUs. That means less confusion over name of
- speedstep-centrino driver (with that driver supposed to be used on
- non-centrino platforms). That means less duplication of code and
- less maintenance effort and no possibility of these two drivers
- going out of sync.
- Current users of speedstep_centrino with ACPI hooks are requested to
- switch over to acpi-cpufreq driver. speedstep-centrino will continue
- to work using older non-ACPI static table based scheme even after this
- date.
-
-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
----------------------------
-
What: /sys/firmware/acpi/namespace
When: 2.6.21
Why: The ACPI namespace is effectively the symbol list for
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-02 23:43 ` Adrian Bunk
@ 2007-07-03 0:36 ` Dave Jones
2007-07-03 1:06 ` Adrian Bunk
0 siblings, 1 reply; 15+ messages in thread
From: Dave Jones @ 2007-07-03 0:36 UTC (permalink / raw)
To: Adrian Bunk
Cc: Andrew Morton, cpufreq, linux-kernel, Venkatesh Pallipadi, lenb,
linux-acpi
On Tue, Jul 03, 2007 at 01:43:13AM +0200, Adrian Bunk wrote:
> > Applying '[CPUFREQ] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI'
> >
> > error: patch failed: arch/x86_64/kernel/cpufreq/Kconfig:65
> > error: arch/x86_64/kernel/cpufreq/Kconfig: patch does not apply
>
> I made the patch against 2.6.22-rc6-mm1 (based on an older version of
> this patch) but I missed the fuzz (and GNU patch defaults to accept
> patches with a fuzz of 2).
>
> Below is a version of the patch with the fuzz edited out.
It also has the context edited out :)
> @@ -65,1 +60,1 @@
> - depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
> + depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
> --- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
> +++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
This won't apply either.
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-03 0:36 ` Dave Jones
@ 2007-07-03 1:06 ` Adrian Bunk
2007-07-03 1:13 ` Dave Jones
0 siblings, 1 reply; 15+ messages in thread
From: Adrian Bunk @ 2007-07-03 1:06 UTC (permalink / raw)
To: Dave Jones, Andrew Morton, cpufreq, linux-kernel,
Venkatesh Pallipadi, lenb, linux-acpi
On Mon, Jul 02, 2007 at 08:36:48PM -0400, Dave Jones wrote:
> On Tue, Jul 03, 2007 at 01:43:13AM +0200, Adrian Bunk wrote:
> > > Applying '[CPUFREQ] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI'
> > >
> > > error: patch failed: arch/x86_64/kernel/cpufreq/Kconfig:65
> > > error: arch/x86_64/kernel/cpufreq/Kconfig: patch does not apply
> >
> > I made the patch against 2.6.22-rc6-mm1 (based on an older version of
> > this patch) but I missed the fuzz (and GNU patch defaults to accept
> > patches with a fuzz of 2).
> >
> > Below is a version of the patch with the fuzz edited out.
>
> It also has the context edited out :)
That's what I said.
> > @@ -65,1 +60,1 @@
> > - depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
> > + depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
> > --- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
> > +++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
>
> This won't apply either.
git-apply --unidiff-zero
git-apply defaulting to reject valid patches that are purposefully
without context is IMHO plain silly. I'll ask the git maintainers to
change this.
> Dave
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-03 1:06 ` Adrian Bunk
@ 2007-07-03 1:13 ` Dave Jones
2007-07-08 21:39 ` Adrian Bunk
0 siblings, 1 reply; 15+ messages in thread
From: Dave Jones @ 2007-07-03 1:13 UTC (permalink / raw)
To: Adrian Bunk
Cc: Andrew Morton, cpufreq, linux-kernel, Venkatesh Pallipadi, lenb,
linux-acpi
On Tue, Jul 03, 2007 at 03:06:11AM +0200, Adrian Bunk wrote:
> > > @@ -65,1 +60,1 @@
> > > - depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
> > > + depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
> > > --- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
> > > +++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
> >
> > This won't apply either.
>
> git-apply --unidiff-zero
git-apply isn't the same thing as git-applymbox. (which doesn't know that option)
The former involves a lot more hassle to get the changelog & comments
pasted in, along with it getting attribution correct automatically.
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 15+ messages in thread
* [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-07-03 1:13 ` Dave Jones
@ 2007-07-08 21:39 ` Adrian Bunk
0 siblings, 0 replies; 15+ messages in thread
From: Adrian Bunk @ 2007-07-08 21:39 UTC (permalink / raw)
To: Dave Jones, Andrew Morton, cpufreq, linux-kernel,
Venkatesh Pallipadi, lenb, linux-acpi
On Mon, Jul 02, 2007 at 09:13:54PM -0400, Dave Jones wrote:
> On Tue, Jul 03, 2007 at 03:06:11AM +0200, Adrian Bunk wrote:
>
> > > > @@ -65,1 +60,1 @@
> > > > - depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
> > > > + depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
> > > > --- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
> > > > +++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
> > >
> > > This won't apply either.
> >
> > git-apply --unidiff-zero
>
> git-apply isn't the same thing as git-applymbox. (which doesn't know that option)
> The former involves a lot more hassle to get the changelog & comments
> pasted in, along with it getting attribution correct automatically.
Next try...
> Dave
cu
Adrian
<-- snip -->
This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Dave Jones <davej@redhat.com>
---
Documentation/feature-removal-schedule.txt | 22 -
arch/i386/kernel/cpu/cpufreq/Kconfig | 18
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280 --------------
arch/x86_64/kernel/cpufreq/Kconfig | 6
4 files changed, 21 insertions(+), 305 deletions(-)
--- linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old 2006-12-01 07:23:38.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-12-01 07:24:02.000000000 +0100
@@ -109,7 +109,7 @@
config X86_SPEEDSTEP_CENTRINO
tristate "Intel Enhanced SpeedStep"
select CPU_FREQ_TABLE
- select X86_SPEEDSTEP_CENTRINO_TABLE if (!X86_SPEEDSTEP_CENTRINO_ACPI)
+ select X86_SPEEDSTEP_CENTRINO_TABLE
help
This adds the CPUFreq driver for Enhanced SpeedStep enabled
mobile CPUs. This means Intel Pentium M (Centrino) CPUs. However,
@@ -121,20 +121,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool "Use ACPI tables to decode valid frequency/voltage (deprecated)"
- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
- help
- This is deprecated and this functionality is now merged into
- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
- speedstep_centrino.
- Use primarily the information provided in the BIOS ACPI tables
- to determine valid CPU frequency and voltage pairings. It is
- required for the driver to work on non-Banias CPUs.
-
- If in doubt, say Y.
-
config X86_SPEEDSTEP_CENTRINO_TABLE
bool "Built-in tables for Banias CPUs"
depends on X86_SPEEDSTEP_CENTRINO
@@ -222,7 +207,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
@@ -21,12 +21,6 @@
#include <linux/delay.h>
#include <linux/compiler.h>
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-#include <linux/acpi.h>
-#include <linux/dmi.h>
-#include <acpi/processor.h>
-#endif
-
#include <asm/msr.h>
#include <asm/processor.h>
#include <asm/cpufeature.h>
@@ -257,9 +251,7 @@
/* Matched a non-match */
dprintk("no table support for CPU model \"%s\"\n",
cpu->x86_model_id);
-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- dprintk("try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
-#endif
+ dprintk("try using the acpi-cpufreq driver\n");
return -ENOENT;
}
@@ -346,213 +338,6 @@
}
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-
-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
-
-/*
- * centrino_cpu_early_init_acpi - Do the preregistering with ACPI P-States
- * library
- *
- * Before doing the actual init, we need to do _PSD related setup whenever
- * supported by the BIOS. These are handled by this early_init routine.
- */
-static int centrino_cpu_early_init_acpi(void)
-{
- unsigned int i, j;
- struct acpi_processor_performance *data;
-
- for_each_possible_cpu(i) {
- data = kzalloc(sizeof(struct acpi_processor_performance),
- GFP_KERNEL);
- if (!data) {
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
- return (-ENOMEM);
- }
- acpi_perf_data[i] = data;
- }
-
- acpi_processor_preregister_performance(acpi_perf_data);
- return 0;
-}
-
-
-#ifdef CONFIG_SMP
-/*
- * Some BIOSes do SW_ANY coordination internally, either set it up in hw
- * or do it in BIOS firmware and won't inform about it to OS. If not
- * detected, this has a side effect of making CPU run at a different speed
- * than OS intended it to run at. Detect it and handle it cleanly.
- */
-static int bios_with_sw_any_bug;
-static int sw_any_bug_found(struct dmi_system_id *d)
-{
- bios_with_sw_any_bug = 1;
- return 0;
-}
-
-static struct dmi_system_id sw_any_bug_dmi_table[] = {
- {
- .callback = sw_any_bug_found,
- .ident = "Supermicro Server X6DLP",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
- },
- },
- { }
-};
-#endif
-
-/*
- * centrino_cpu_init_acpi - register with ACPI P-States library
- *
- * Register with the ACPI P-States library (part of drivers/acpi/processor.c)
- * in order to determine correct frequency and voltage pairings by reading
- * the _PSS of the ACPI DSDT or SSDT tables.
- */
-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
-{
- unsigned long cur_freq;
- int result = 0, i;
- unsigned int cpu = policy->cpu;
- struct acpi_processor_performance *p;
-
- p = acpi_perf_data[cpu];
-
- /* register with ACPI core */
- if (acpi_processor_register_performance(p, cpu)) {
- dprintk(PFX "obtaining ACPI data failed\n");
- return -EIO;
- }
-
- policy->shared_type = p->shared_type;
- /*
- * Will let policy->cpus know about dependency only when software
- * coordination is required.
- */
- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
- policy->cpus = p->shared_cpu_map;
- }
-
-#ifdef CONFIG_SMP
- dmi_check_system(sw_any_bug_dmi_table);
- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
- policy->cpus = cpu_core_map[cpu];
- }
-#endif
-
- /* verify the acpi_data */
- if (p->state_count <= 1) {
- dprintk("No P-States\n");
- result = -ENODEV;
- goto err_unreg;
- }
-
- if ((p->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) ||
- (p->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
- dprintk("Invalid control/status registers (%x - %x)\n",
- p->control_register.space_id, p->status_register.space_id);
- result = -EIO;
- goto err_unreg;
- }
-
- for (i=0; i<p->state_count; i++) {
- if ((p->states[i].control & INTEL_MSR_RANGE) !=
- (p->states[i].status & INTEL_MSR_RANGE)) {
- dprintk("Different MSR bits in control (%llu) and status (%llu)\n",
- p->states[i].control, p->states[i].status);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (!p->states[i].core_frequency) {
- dprintk("Zero core frequency for state %u\n", i);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (p->states[i].core_frequency > p->states[0].core_frequency) {
- dprintk("P%u has larger frequency (%llu) than P0 (%llu), skipping\n", i,
- p->states[i].core_frequency, p->states[0].core_frequency);
- p->states[i].core_frequency = 0;
- continue;
- }
- }
-
- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model), GFP_KERNEL);
- if (!centrino_model[cpu]) {
- result = -ENOMEM;
- goto err_unreg;
- }
-
- centrino_model[cpu]->model_name=NULL;
- centrino_model[cpu]->max_freq = p->states[0].core_frequency * 1000;
- centrino_model[cpu]->op_points = kmalloc(sizeof(struct cpufreq_frequency_table) *
- (p->state_count + 1), GFP_KERNEL);
- if (!centrino_model[cpu]->op_points) {
- result = -ENOMEM;
- goto err_kfree;
- }
-
- for (i=0; i<p->state_count; i++) {
- centrino_model[cpu]->op_points[i].index = p->states[i].control & INTEL_MSR_RANGE;
- centrino_model[cpu]->op_points[i].frequency = p->states[i].core_frequency * 1000;
- dprintk("adding state %i with frequency %u and control value %04x\n",
- i, centrino_model[cpu]->op_points[i].frequency, centrino_model[cpu]->op_points[i].index);
- }
- centrino_model[cpu]->op_points[p->state_count].frequency = CPUFREQ_TABLE_END;
-
- cur_freq = get_cur_freq(cpu);
-
- for (i=0; i<p->state_count; i++) {
- if (!p->states[i].core_frequency) {
- dprintk("skipping state %u\n", i);
- centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
- continue;
- }
-
- if (extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
- (centrino_model[cpu]->op_points[i].frequency)) {
- dprintk("Invalid encoded frequency (%u vs. %u)\n",
- extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
- centrino_model[cpu]->op_points[i].frequency);
- result = -EINVAL;
- goto err_kfree_all;
- }
-
- if (cur_freq == centrino_model[cpu]->op_points[i].frequency)
- p->state = i;
- }
-
- /* notify BIOS that we exist */
- acpi_processor_notify_smm(THIS_MODULE);
- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
- "config is deprecated.\n "
- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
-
- return 0;
-
- err_kfree_all:
- kfree(centrino_model[cpu]->op_points);
- err_kfree:
- kfree(centrino_model[cpu]);
- err_unreg:
- acpi_processor_unregister_performance(p, cpu);
- dprintk(PFX "invalid ACPI data\n");
- return (result);
-}
-#else
-static inline int centrino_cpu_init_acpi(struct cpufreq_policy *policy) { return -ENODEV; }
-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
-#endif
-
static int centrino_cpu_init(struct cpufreq_policy *policy)
{
struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
@@ -568,27 +353,25 @@
if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
- if (centrino_cpu_init_acpi(policy)) {
- if (policy->cpu != 0)
- return -ENODEV;
+ if (policy->cpu != 0)
+ return -ENODEV;
- for (i = 0; i < N_IDS; i++)
- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
- break;
-
- if (i != N_IDS)
- centrino_cpu[policy->cpu] = &cpu_ids[i];
-
- if (!centrino_cpu[policy->cpu]) {
- dprintk("found unsupported CPU with "
- "Enhanced SpeedStep: send /proc/cpuinfo to "
- MAINTAINER "\n");
- return -ENODEV;
- }
+ for (i = 0; i < N_IDS; i++)
+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
+ break;
- if (centrino_cpu_init_table(policy)) {
- return -ENODEV;
- }
+ if (i != N_IDS)
+ centrino_cpu[policy->cpu] = &cpu_ids[i];
+
+ if (!centrino_cpu[policy->cpu]) {
+ dprintk("found unsupported CPU with "
+ "Enhanced SpeedStep: send /proc/cpuinfo to "
+ MAINTAINER "\n");
+ return -ENODEV;
+ }
+
+ if (centrino_cpu_init_table(policy)) {
+ return -ENODEV;
}
/* Check to see if Enhanced SpeedStep is enabled, and try to
@@ -634,20 +417,6 @@
cpufreq_frequency_table_put_attr(cpu);
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- if (!centrino_model[cpu]->model_name) {
- static struct acpi_processor_performance *p;
-
- if (acpi_perf_data[cpu]) {
- p = acpi_perf_data[cpu];
- dprintk("unregistering and freeing ACPI data\n");
- acpi_processor_unregister_performance(p, cpu);
- kfree(centrino_model[cpu]->op_points);
- kfree(centrino_model[cpu]);
- }
- }
-#endif
-
centrino_model[cpu] = NULL;
return 0;
@@ -841,25 +610,12 @@
if (!cpu_has(cpu, X86_FEATURE_EST))
return -ENODEV;
- centrino_cpu_early_init_acpi();
-
return cpufreq_register_driver(¢rino_driver);
}
static void __exit centrino_exit(void)
{
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- unsigned int j;
-#endif
-
cpufreq_unregister_driver(¢rino_driver);
-
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
-#endif
}
MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
--- linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt.old 2007-02-17 23:33:09.000000000 +0100
+++ linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt 2007-02-17 23:33:46.000000000 +0100
@@ -214,28 +214,6 @@
---------------------------
-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
-When: December 2006
-Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
- functionally very much similar. They talk to ACPI in same way. Only
- difference between them is the way they do frequency transitions.
- One uses MSRs and the other one uses IO ports. Functionaliy of
- speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
- That means one common driver will support all Intel Enhanced Speedstep
- capable CPUs. That means less confusion over name of
- speedstep-centrino driver (with that driver supposed to be used on
- non-centrino platforms). That means less duplication of code and
- less maintenance effort and no possibility of these two drivers
- going out of sync.
- Current users of speedstep_centrino with ACPI hooks are requested to
- switch over to acpi-cpufreq driver. speedstep-centrino will continue
- to work using older non-ACPI static table based scheme even after this
- date.
-
-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
----------------------------
-
What: /sys/firmware/acpi/namespace
When: 2.6.21
Why: The ACPI namespace is effectively the symbol list for
--- linux-2.6.22-rc6-mm1/arch/x86_64/kernel/cpufreq/Kconfig.old 2007-07-08 23:29:23.000000000 +0200
+++ linux-2.6.22-rc6-mm1/arch/x86_64/kernel/cpufreq/Kconfig 2007-07-08 23:29:34.000000000 +0200
@@ -48,10 +48,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool
- depends on X86_SPEEDSTEP_CENTRINO
-
config X86_ACPI_CPUFREQ
tristate "ACPI Processor P-States driver"
select CPU_FREQ_TABLE
@@ -73,7 +69,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
^ permalink raw reply [flat|nested] 15+ messages in thread
* [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
@ 2007-02-20 0:06 Adrian Bunk
2007-02-24 14:20 ` Pallipadi, Venkatesh
2007-04-06 22:30 ` Bill Davidsen
0 siblings, 2 replies; 15+ messages in thread
From: Adrian Bunk @ 2007-02-20 0:06 UTC (permalink / raw)
To: Venkatesh Pallipadi; +Cc: davej, cpufreq, linux-kernel
This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
Documentation/feature-removal-schedule.txt | 22 -
arch/i386/kernel/cpu/cpufreq/Kconfig | 19
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280 --------------
arch/x86_64/kernel/cpufreq/Kconfig | 7
4 files changed, 21 insertions(+), 307 deletions(-)
--- linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old 2006-12-01 07:23:38.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-12-01 07:24:02.000000000 +0100
@@ -109,7 +109,7 @@
config X86_SPEEDSTEP_CENTRINO
tristate "Intel Enhanced SpeedStep"
select CPU_FREQ_TABLE
- select X86_SPEEDSTEP_CENTRINO_TABLE if (!X86_SPEEDSTEP_CENTRINO_ACPI)
+ select X86_SPEEDSTEP_CENTRINO_TABLE
help
This adds the CPUFreq driver for Enhanced SpeedStep enabled
mobile CPUs. This means Intel Pentium M (Centrino) CPUs. However,
@@ -121,21 +121,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool "Use ACPI tables to decode valid frequency/voltage (deprecated)"
- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
- default y
- help
- This is deprecated and this functionality is now merged into
- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
- speedstep_centrino.
- Use primarily the information provided in the BIOS ACPI tables
- to determine valid CPU frequency and voltage pairings. It is
- required for the driver to work on non-Banias CPUs.
-
- If in doubt, say Y.
-
config X86_SPEEDSTEP_CENTRINO_TABLE
bool "Built-in tables for Banias CPUs"
depends on X86_SPEEDSTEP_CENTRINO
@@ -222,7 +207,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig.old 2006-12-01 07:24:11.000000000 +0100
+++ linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig 2006-12-01 07:24:21.000000000 +0100
@@ -42,11 +42,6 @@
If in doubt, say N.
-config X86_SPEEDSTEP_CENTRINO_ACPI
- bool
- depends on X86_SPEEDSTEP_CENTRINO
- default y
-
config X86_ACPI_CPUFREQ
tristate "ACPI Processor P-States driver"
select CPU_FREQ_TABLE
@@ -65,7 +60,7 @@
config X86_ACPI_CPUFREQ_PROC_INTF
bool "/proc/acpi/processor/../performance interface (deprecated)"
depends on PROC_FS
- depends on X86_ACPI_CPUFREQ || X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
help
This enables the deprecated /proc/acpi/processor/../performance
interface. While it is helpful for debugging, the generic,
--- linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c.old 2007-02-17 23:29:53.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-17 23:30:44.000000000 +0100
@@ -21,12 +21,6 @@
#include <linux/delay.h>
#include <linux/compiler.h>
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-#include <linux/acpi.h>
-#include <linux/dmi.h>
-#include <acpi/processor.h>
-#endif
-
#include <asm/msr.h>
#include <asm/processor.h>
#include <asm/cpufeature.h>
@@ -257,9 +251,7 @@
/* Matched a non-match */
dprintk("no table support for CPU model \"%s\"\n",
cpu->x86_model_id);
-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- dprintk("try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
-#endif
+ dprintk("try using the acpi-cpufreq driver\n");
return -ENOENT;
}
@@ -346,213 +338,6 @@
}
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-
-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
-
-/*
- * centrino_cpu_early_init_acpi - Do the preregistering with ACPI P-States
- * library
- *
- * Before doing the actual init, we need to do _PSD related setup whenever
- * supported by the BIOS. These are handled by this early_init routine.
- */
-static int centrino_cpu_early_init_acpi(void)
-{
- unsigned int i, j;
- struct acpi_processor_performance *data;
-
- for_each_possible_cpu(i) {
- data = kzalloc(sizeof(struct acpi_processor_performance),
- GFP_KERNEL);
- if (!data) {
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
- return (-ENOMEM);
- }
- acpi_perf_data[i] = data;
- }
-
- acpi_processor_preregister_performance(acpi_perf_data);
- return 0;
-}
-
-
-#ifdef CONFIG_SMP
-/*
- * Some BIOSes do SW_ANY coordination internally, either set it up in hw
- * or do it in BIOS firmware and won't inform about it to OS. If not
- * detected, this has a side effect of making CPU run at a different speed
- * than OS intended it to run at. Detect it and handle it cleanly.
- */
-static int bios_with_sw_any_bug;
-static int sw_any_bug_found(struct dmi_system_id *d)
-{
- bios_with_sw_any_bug = 1;
- return 0;
-}
-
-static struct dmi_system_id sw_any_bug_dmi_table[] = {
- {
- .callback = sw_any_bug_found,
- .ident = "Supermicro Server X6DLP",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
- },
- },
- { }
-};
-#endif
-
-/*
- * centrino_cpu_init_acpi - register with ACPI P-States library
- *
- * Register with the ACPI P-States library (part of drivers/acpi/processor.c)
- * in order to determine correct frequency and voltage pairings by reading
- * the _PSS of the ACPI DSDT or SSDT tables.
- */
-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
-{
- unsigned long cur_freq;
- int result = 0, i;
- unsigned int cpu = policy->cpu;
- struct acpi_processor_performance *p;
-
- p = acpi_perf_data[cpu];
-
- /* register with ACPI core */
- if (acpi_processor_register_performance(p, cpu)) {
- dprintk(PFX "obtaining ACPI data failed\n");
- return -EIO;
- }
-
- policy->shared_type = p->shared_type;
- /*
- * Will let policy->cpus know about dependency only when software
- * coordination is required.
- */
- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
- policy->cpus = p->shared_cpu_map;
- }
-
-#ifdef CONFIG_SMP
- dmi_check_system(sw_any_bug_dmi_table);
- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
- policy->cpus = cpu_core_map[cpu];
- }
-#endif
-
- /* verify the acpi_data */
- if (p->state_count <= 1) {
- dprintk("No P-States\n");
- result = -ENODEV;
- goto err_unreg;
- }
-
- if ((p->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) ||
- (p->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
- dprintk("Invalid control/status registers (%x - %x)\n",
- p->control_register.space_id, p->status_register.space_id);
- result = -EIO;
- goto err_unreg;
- }
-
- for (i=0; i<p->state_count; i++) {
- if ((p->states[i].control & INTEL_MSR_RANGE) !=
- (p->states[i].status & INTEL_MSR_RANGE)) {
- dprintk("Different MSR bits in control (%llu) and status (%llu)\n",
- p->states[i].control, p->states[i].status);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (!p->states[i].core_frequency) {
- dprintk("Zero core frequency for state %u\n", i);
- result = -EINVAL;
- goto err_unreg;
- }
-
- if (p->states[i].core_frequency > p->states[0].core_frequency) {
- dprintk("P%u has larger frequency (%llu) than P0 (%llu), skipping\n", i,
- p->states[i].core_frequency, p->states[0].core_frequency);
- p->states[i].core_frequency = 0;
- continue;
- }
- }
-
- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model), GFP_KERNEL);
- if (!centrino_model[cpu]) {
- result = -ENOMEM;
- goto err_unreg;
- }
-
- centrino_model[cpu]->model_name=NULL;
- centrino_model[cpu]->max_freq = p->states[0].core_frequency * 1000;
- centrino_model[cpu]->op_points = kmalloc(sizeof(struct cpufreq_frequency_table) *
- (p->state_count + 1), GFP_KERNEL);
- if (!centrino_model[cpu]->op_points) {
- result = -ENOMEM;
- goto err_kfree;
- }
-
- for (i=0; i<p->state_count; i++) {
- centrino_model[cpu]->op_points[i].index = p->states[i].control & INTEL_MSR_RANGE;
- centrino_model[cpu]->op_points[i].frequency = p->states[i].core_frequency * 1000;
- dprintk("adding state %i with frequency %u and control value %04x\n",
- i, centrino_model[cpu]->op_points[i].frequency, centrino_model[cpu]->op_points[i].index);
- }
- centrino_model[cpu]->op_points[p->state_count].frequency = CPUFREQ_TABLE_END;
-
- cur_freq = get_cur_freq(cpu);
-
- for (i=0; i<p->state_count; i++) {
- if (!p->states[i].core_frequency) {
- dprintk("skipping state %u\n", i);
- centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
- continue;
- }
-
- if (extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
- (centrino_model[cpu]->op_points[i].frequency)) {
- dprintk("Invalid encoded frequency (%u vs. %u)\n",
- extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
- centrino_model[cpu]->op_points[i].frequency);
- result = -EINVAL;
- goto err_kfree_all;
- }
-
- if (cur_freq == centrino_model[cpu]->op_points[i].frequency)
- p->state = i;
- }
-
- /* notify BIOS that we exist */
- acpi_processor_notify_smm(THIS_MODULE);
- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
- "config is deprecated.\n "
- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
-
- return 0;
-
- err_kfree_all:
- kfree(centrino_model[cpu]->op_points);
- err_kfree:
- kfree(centrino_model[cpu]);
- err_unreg:
- acpi_processor_unregister_performance(p, cpu);
- dprintk(PFX "invalid ACPI data\n");
- return (result);
-}
-#else
-static inline int centrino_cpu_init_acpi(struct cpufreq_policy *policy) { return -ENODEV; }
-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
-#endif
-
static int centrino_cpu_init(struct cpufreq_policy *policy)
{
struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
@@ -568,27 +353,25 @@
if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
- if (centrino_cpu_init_acpi(policy)) {
- if (policy->cpu != 0)
- return -ENODEV;
+ if (policy->cpu != 0)
+ return -ENODEV;
- for (i = 0; i < N_IDS; i++)
- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
- break;
-
- if (i != N_IDS)
- centrino_cpu[policy->cpu] = &cpu_ids[i];
-
- if (!centrino_cpu[policy->cpu]) {
- dprintk("found unsupported CPU with "
- "Enhanced SpeedStep: send /proc/cpuinfo to "
- MAINTAINER "\n");
- return -ENODEV;
- }
+ for (i = 0; i < N_IDS; i++)
+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
+ break;
- if (centrino_cpu_init_table(policy)) {
- return -ENODEV;
- }
+ if (i != N_IDS)
+ centrino_cpu[policy->cpu] = &cpu_ids[i];
+
+ if (!centrino_cpu[policy->cpu]) {
+ dprintk("found unsupported CPU with "
+ "Enhanced SpeedStep: send /proc/cpuinfo to "
+ MAINTAINER "\n");
+ return -ENODEV;
+ }
+
+ if (centrino_cpu_init_table(policy)) {
+ return -ENODEV;
}
/* Check to see if Enhanced SpeedStep is enabled, and try to
@@ -634,20 +417,6 @@
cpufreq_frequency_table_put_attr(cpu);
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- if (!centrino_model[cpu]->model_name) {
- static struct acpi_processor_performance *p;
-
- if (acpi_perf_data[cpu]) {
- p = acpi_perf_data[cpu];
- dprintk("unregistering and freeing ACPI data\n");
- acpi_processor_unregister_performance(p, cpu);
- kfree(centrino_model[cpu]->op_points);
- kfree(centrino_model[cpu]);
- }
- }
-#endif
-
centrino_model[cpu] = NULL;
return 0;
@@ -841,25 +610,12 @@
if (!cpu_has(cpu, X86_FEATURE_EST))
return -ENODEV;
- centrino_cpu_early_init_acpi();
-
return cpufreq_register_driver(¢rino_driver);
}
static void __exit centrino_exit(void)
{
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- unsigned int j;
-#endif
-
cpufreq_unregister_driver(¢rino_driver);
-
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
- for_each_possible_cpu(j) {
- kfree(acpi_perf_data[j]);
- acpi_perf_data[j] = NULL;
- }
-#endif
}
MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
--- linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt.old 2007-02-17 23:33:09.000000000 +0100
+++ linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt 2007-02-17 23:33:46.000000000 +0100
@@ -214,28 +214,6 @@
---------------------------
-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
-When: December 2006
-Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
- functionally very much similar. They talk to ACPI in same way. Only
- difference between them is the way they do frequency transitions.
- One uses MSRs and the other one uses IO ports. Functionaliy of
- speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
- That means one common driver will support all Intel Enhanced Speedstep
- capable CPUs. That means less confusion over name of
- speedstep-centrino driver (with that driver supposed to be used on
- non-centrino platforms). That means less duplication of code and
- less maintenance effort and no possibility of these two drivers
- going out of sync.
- Current users of speedstep_centrino with ACPI hooks are requested to
- switch over to acpi-cpufreq driver. speedstep-centrino will continue
- to work using older non-ACPI static table based scheme even after this
- date.
-
-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
----------------------------
-
What: /sys/firmware/acpi/namespace
When: 2.6.21
Why: The ACPI namespace is effectively the symbol list for
^ permalink raw reply [flat|nested] 15+ messages in thread* RE: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-02-20 0:06 Adrian Bunk
@ 2007-02-24 14:20 ` Pallipadi, Venkatesh
2007-04-06 22:30 ` Bill Davidsen
1 sibling, 0 replies; 15+ messages in thread
From: Pallipadi, Venkatesh @ 2007-02-24 14:20 UTC (permalink / raw)
To: Adrian Bunk; +Cc: davej, cpufreq, linux-kernel
Ack.
Dave: Can you add this patch to cpufreq.git -> mm.
Thanks,
Venki
>-----Original Message-----
>From: Adrian Bunk [mailto:bunk@stusta.de]
>Sent: Monday, February 19, 2007 4:07 PM
>To: Pallipadi, Venkatesh
>Cc: davej@codemonkey.org.uk; cpufreq@lists.linux.org.uk;
>linux-kernel@vger.kernel.org
>Subject: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
>
>This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
>
>Signed-off-by: Adrian Bunk <bunk@stusta.de>
>
>---
>
> Documentation/feature-removal-schedule.txt | 22 -
> arch/i386/kernel/cpu/cpufreq/Kconfig | 19
> arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 280
>--------------
> arch/x86_64/kernel/cpufreq/Kconfig | 7
> 4 files changed, 21 insertions(+), 307 deletions(-)
>
>---
>linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig.old
>2006-12-01 07:23:38.000000000 +0100
>+++ linux-2.6.19-rc6-mm2/arch/i386/kernel/cpu/cpufreq/Kconfig
>2006-12-01 07:24:02.000000000 +0100
>@@ -109,7 +109,7 @@
> config X86_SPEEDSTEP_CENTRINO
> tristate "Intel Enhanced SpeedStep"
> select CPU_FREQ_TABLE
>- select X86_SPEEDSTEP_CENTRINO_TABLE if
>(!X86_SPEEDSTEP_CENTRINO_ACPI)
>+ select X86_SPEEDSTEP_CENTRINO_TABLE
> help
> This adds the CPUFreq driver for Enhanced SpeedStep enabled
> mobile CPUs. This means Intel Pentium M (Centrino)
>CPUs. However,
>@@ -121,21 +121,6 @@
>
> If in doubt, say N.
>
>-config X86_SPEEDSTEP_CENTRINO_ACPI
>- bool "Use ACPI tables to decode valid frequency/voltage
>(deprecated)"
>- depends on X86_SPEEDSTEP_CENTRINO && ACPI_PROCESSOR
>- depends on !(X86_SPEEDSTEP_CENTRINO = y && ACPI_PROCESSOR = m)
>- default y
>- help
>- This is deprecated and this functionality is now merged into
>- acpi_cpufreq (X86_ACPI_CPUFREQ). Use that driver instead of
>- speedstep_centrino.
>- Use primarily the information provided in the BIOS ACPI tables
>- to determine valid CPU frequency and voltage pairings. It is
>- required for the driver to work on non-Banias CPUs.
>-
>- If in doubt, say Y.
>-
> config X86_SPEEDSTEP_CENTRINO_TABLE
> bool "Built-in tables for Banias CPUs"
> depends on X86_SPEEDSTEP_CENTRINO
>@@ -222,7 +207,7 @@
> config X86_ACPI_CPUFREQ_PROC_INTF
> bool "/proc/acpi/processor/../performance interface
>(deprecated)"
> depends on PROC_FS
>- depends on X86_ACPI_CPUFREQ ||
>X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K7_ACPI ||
>X86_POWERNOW_K8_ACPI
>+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI ||
>X86_POWERNOW_K8_ACPI
> help
> This enables the deprecated
>/proc/acpi/processor/../performance
> interface. While it is helpful for debugging, the generic,
>---
>linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig.old
>2006-12-01 07:24:11.000000000 +0100
>+++ linux-2.6.19-rc6-mm2/arch/x86_64/kernel/cpufreq/Kconfig
>2006-12-01 07:24:21.000000000 +0100
>@@ -42,11 +42,6 @@
>
> If in doubt, say N.
>
>-config X86_SPEEDSTEP_CENTRINO_ACPI
>- bool
>- depends on X86_SPEEDSTEP_CENTRINO
>- default y
>-
> config X86_ACPI_CPUFREQ
> tristate "ACPI Processor P-States driver"
> select CPU_FREQ_TABLE
>@@ -65,7 +60,7 @@
> config X86_ACPI_CPUFREQ_PROC_INTF
> bool "/proc/acpi/processor/../performance interface
>(deprecated)"
> depends on PROC_FS
>- depends on X86_ACPI_CPUFREQ ||
>X86_SPEEDSTEP_CENTRINO_ACPI || X86_POWERNOW_K8_ACPI
>+ depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K8_ACPI
> help
> This enables the deprecated
>/proc/acpi/processor/../performance
> interface. While it is helpful for debugging, the generic,
>---
>linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-centrin
o.c.old 2007-02-17 23:29:53.000000000 +0100
>+++
>linux-2.6.20-mm1/arch/i386/kernel/cpu/cpufreq/speedstep-cen
trino.c 2007-02-17 23:30:44.000000000 +0100
>@@ -21,12 +21,6 @@
> #include <linux/delay.h>
> #include <linux/compiler.h>
>
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>-#include <linux/acpi.h>
>-#include <linux/dmi.h>
>-#include <acpi/processor.h>
>-#endif
>-
> #include <asm/msr.h>
> #include <asm/processor.h>
> #include <asm/cpufeature.h>
>@@ -257,9 +251,7 @@
> /* Matched a non-match */
> dprintk("no table support for CPU model \"%s\"\n",
> cpu->x86_model_id);
>-#ifndef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>- dprintk("try compiling with
>CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled\n");
>-#endif
>+ dprintk("try using the acpi-cpufreq driver\n");
> return -ENOENT;
> }
>
>@@ -346,213 +338,6 @@
> }
>
>
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>-
>-static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
>-
>-/*
>- * centrino_cpu_early_init_acpi - Do the preregistering with
>ACPI P-States
>- * library
>- *
>- * Before doing the actual init, we need to do _PSD related
>setup whenever
>- * supported by the BIOS. These are handled by this
>early_init routine.
>- */
>-static int centrino_cpu_early_init_acpi(void)
>-{
>- unsigned int i, j;
>- struct acpi_processor_performance *data;
>-
>- for_each_possible_cpu(i) {
>- data = kzalloc(sizeof(struct
>acpi_processor_performance),
>- GFP_KERNEL);
>- if (!data) {
>- for_each_possible_cpu(j) {
>- kfree(acpi_perf_data[j]);
>- acpi_perf_data[j] = NULL;
>- }
>- return (-ENOMEM);
>- }
>- acpi_perf_data[i] = data;
>- }
>-
>- acpi_processor_preregister_performance(acpi_perf_data);
>- return 0;
>-}
>-
>-
>-#ifdef CONFIG_SMP
>-/*
>- * Some BIOSes do SW_ANY coordination internally, either set
>it up in hw
>- * or do it in BIOS firmware and won't inform about it to OS. If not
>- * detected, this has a side effect of making CPU run at a
>different speed
>- * than OS intended it to run at. Detect it and handle it cleanly.
>- */
>-static int bios_with_sw_any_bug;
>-static int sw_any_bug_found(struct dmi_system_id *d)
>-{
>- bios_with_sw_any_bug = 1;
>- return 0;
>-}
>-
>-static struct dmi_system_id sw_any_bug_dmi_table[] = {
>- {
>- .callback = sw_any_bug_found,
>- .ident = "Supermicro Server X6DLP",
>- .matches = {
>- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
>- DMI_MATCH(DMI_BIOS_VERSION, "080010"),
>- DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
>- },
>- },
>- { }
>-};
>-#endif
>-
>-/*
>- * centrino_cpu_init_acpi - register with ACPI P-States library
>- *
>- * Register with the ACPI P-States library (part of
>drivers/acpi/processor.c)
>- * in order to determine correct frequency and voltage
>pairings by reading
>- * the _PSS of the ACPI DSDT or SSDT tables.
>- */
>-static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
>-{
>- unsigned long cur_freq;
>- int result = 0, i;
>- unsigned int cpu = policy->cpu;
>- struct acpi_processor_performance *p;
>-
>- p = acpi_perf_data[cpu];
>-
>- /* register with ACPI core */
>- if (acpi_processor_register_performance(p, cpu)) {
>- dprintk(PFX "obtaining ACPI data failed\n");
>- return -EIO;
>- }
>-
>- policy->shared_type = p->shared_type;
>- /*
>- * Will let policy->cpus know about dependency only
>when software
>- * coordination is required.
>- */
>- if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
>- policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) {
>- policy->cpus = p->shared_cpu_map;
>- }
>-
>-#ifdef CONFIG_SMP
>- dmi_check_system(sw_any_bug_dmi_table);
>- if (bios_with_sw_any_bug && cpus_weight(policy->cpus) == 1) {
>- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
>- policy->cpus = cpu_core_map[cpu];
>- }
>-#endif
>-
>- /* verify the acpi_data */
>- if (p->state_count <= 1) {
>- dprintk("No P-States\n");
>- result = -ENODEV;
>- goto err_unreg;
>- }
>-
>- if ((p->control_register.space_id !=
>ACPI_ADR_SPACE_FIXED_HARDWARE) ||
>- (p->status_register.space_id !=
>ACPI_ADR_SPACE_FIXED_HARDWARE)) {
>- dprintk("Invalid control/status registers (%x - %x)\n",
>- p->control_register.space_id,
>p->status_register.space_id);
>- result = -EIO;
>- goto err_unreg;
>- }
>-
>- for (i=0; i<p->state_count; i++) {
>- if ((p->states[i].control & INTEL_MSR_RANGE) !=
>- (p->states[i].status & INTEL_MSR_RANGE)) {
>- dprintk("Different MSR bits in control
>(%llu) and status (%llu)\n",
>- p->states[i].control,
>p->states[i].status);
>- result = -EINVAL;
>- goto err_unreg;
>- }
>-
>- if (!p->states[i].core_frequency) {
>- dprintk("Zero core frequency for state
>%u\n", i);
>- result = -EINVAL;
>- goto err_unreg;
>- }
>-
>- if (p->states[i].core_frequency >
>p->states[0].core_frequency) {
>- dprintk("P%u has larger frequency
>(%llu) than P0 (%llu), skipping\n", i,
>- p->states[i].core_frequency,
>p->states[0].core_frequency);
>- p->states[i].core_frequency = 0;
>- continue;
>- }
>- }
>-
>- centrino_model[cpu] = kzalloc(sizeof(struct cpu_model),
>GFP_KERNEL);
>- if (!centrino_model[cpu]) {
>- result = -ENOMEM;
>- goto err_unreg;
>- }
>-
>- centrino_model[cpu]->model_name=NULL;
>- centrino_model[cpu]->max_freq =
>p->states[0].core_frequency * 1000;
>- centrino_model[cpu]->op_points = kmalloc(sizeof(struct
>cpufreq_frequency_table) *
>- (p->state_count +
>1), GFP_KERNEL);
>- if (!centrino_model[cpu]->op_points) {
>- result = -ENOMEM;
>- goto err_kfree;
>- }
>-
>- for (i=0; i<p->state_count; i++) {
>- centrino_model[cpu]->op_points[i].index =
>p->states[i].control & INTEL_MSR_RANGE;
>- centrino_model[cpu]->op_points[i].frequency =
>p->states[i].core_frequency * 1000;
>- dprintk("adding state %i with frequency %u and
>control value %04x\n",
>- i,
>centrino_model[cpu]->op_points[i].frequency,
>centrino_model[cpu]->op_points[i].index);
>- }
>-
>centrino_model[cpu]->op_points[p->state_count].frequency =
>CPUFREQ_TABLE_END;
>-
>- cur_freq = get_cur_freq(cpu);
>-
>- for (i=0; i<p->state_count; i++) {
>- if (!p->states[i].core_frequency) {
>- dprintk("skipping state %u\n", i);
>-
>centrino_model[cpu]->op_points[i].frequency = CPUFREQ_ENTRY_INVALID;
>- continue;
>- }
>-
>- if
>(extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0) !=
>- (centrino_model[cpu]->op_points[i].frequency)) {
>- dprintk("Invalid encoded frequency (%u
>vs. %u)\n",
>-
>extract_clock(centrino_model[cpu]->op_points[i].index, cpu, 0),
>-
>centrino_model[cpu]->op_points[i].frequency);
>- result = -EINVAL;
>- goto err_kfree_all;
>- }
>-
>- if (cur_freq ==
>centrino_model[cpu]->op_points[i].frequency)
>- p->state = i;
>- }
>-
>- /* notify BIOS that we exist */
>- acpi_processor_notify_smm(THIS_MODULE);
>- printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
>- "config is deprecated.\n "
>- "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
>-
>- return 0;
>-
>- err_kfree_all:
>- kfree(centrino_model[cpu]->op_points);
>- err_kfree:
>- kfree(centrino_model[cpu]);
>- err_unreg:
>- acpi_processor_unregister_performance(p, cpu);
>- dprintk(PFX "invalid ACPI data\n");
>- return (result);
>-}
>-#else
>-static inline int centrino_cpu_init_acpi(struct
>cpufreq_policy *policy) { return -ENODEV; }
>-static inline int centrino_cpu_early_init_acpi(void) { return 0; }
>-#endif
>-
> static int centrino_cpu_init(struct cpufreq_policy *policy)
> {
> struct cpuinfo_x86 *cpu = &cpu_data[policy->cpu];
>@@ -568,27 +353,25 @@
> if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
> centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
>
>- if (centrino_cpu_init_acpi(policy)) {
>- if (policy->cpu != 0)
>- return -ENODEV;
>+ if (policy->cpu != 0)
>+ return -ENODEV;
>
>- for (i = 0; i < N_IDS; i++)
>- if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
>- break;
>-
>- if (i != N_IDS)
>- centrino_cpu[policy->cpu] = &cpu_ids[i];
>-
>- if (!centrino_cpu[policy->cpu]) {
>- dprintk("found unsupported CPU with "
>- "Enhanced SpeedStep: send /proc/cpuinfo to "
>- MAINTAINER "\n");
>- return -ENODEV;
>- }
>+ for (i = 0; i < N_IDS; i++)
>+ if (centrino_verify_cpu_id(cpu, &cpu_ids[i]))
>+ break;
>
>- if (centrino_cpu_init_table(policy)) {
>- return -ENODEV;
>- }
>+ if (i != N_IDS)
>+ centrino_cpu[policy->cpu] = &cpu_ids[i];
>+
>+ if (!centrino_cpu[policy->cpu]) {
>+ dprintk("found unsupported CPU with "
>+ "Enhanced SpeedStep: send /proc/cpuinfo to "
>+ MAINTAINER "\n");
>+ return -ENODEV;
>+ }
>+
>+ if (centrino_cpu_init_table(policy)) {
>+ return -ENODEV;
> }
>
> /* Check to see if Enhanced SpeedStep is enabled, and try to
>@@ -634,20 +417,6 @@
>
> cpufreq_frequency_table_put_attr(cpu);
>
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>- if (!centrino_model[cpu]->model_name) {
>- static struct acpi_processor_performance *p;
>-
>- if (acpi_perf_data[cpu]) {
>- p = acpi_perf_data[cpu];
>- dprintk("unregistering and freeing ACPI
>data\n");
>- acpi_processor_unregister_performance(p, cpu);
>- kfree(centrino_model[cpu]->op_points);
>- kfree(centrino_model[cpu]);
>- }
>- }
>-#endif
>-
> centrino_model[cpu] = NULL;
>
> return 0;
>@@ -841,25 +610,12 @@
> if (!cpu_has(cpu, X86_FEATURE_EST))
> return -ENODEV;
>
>- centrino_cpu_early_init_acpi();
>-
> return cpufreq_register_driver(¢rino_driver);
> }
>
> static void __exit centrino_exit(void)
> {
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>- unsigned int j;
>-#endif
>-
> cpufreq_unregister_driver(¢rino_driver);
>-
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>- for_each_possible_cpu(j) {
>- kfree(acpi_perf_data[j]);
>- acpi_perf_data[j] = NULL;
>- }
>-#endif
> }
>
> MODULE_AUTHOR ("Jeremy Fitzhardinge <jeremy@goop.org>");
>---
>linux-2.6.20-mm1/Documentation/feature-removal-schedule.
>txt.old 2007-02-17 23:33:09.000000000 +0100
>+++
>linux-2.6.20-mm1/Documentation/feature-removal-schedule.txt
>2007-02-17 23:33:46.000000000 +0100
>@@ -214,28 +214,6 @@
>
> ---------------------------
>
>-What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in
>speedstep-centrino driver
>-When: December 2006
>-Why: Speedstep-centrino driver with ACPI hooks and
>acpi-cpufreq driver are
>- functionally very much similar. They talk to ACPI in
>same way. Only
>- difference between them is the way they do frequency
>transitions.
>- One uses MSRs and the other one uses IO ports. Functionaliy of
>- speedstep_centrino with ACPI hooks is now merged into
>acpi-cpufreq.
>- That means one common driver will support all Intel
>Enhanced Speedstep
>- capable CPUs. That means less confusion over name of
>- speedstep-centrino driver (with that driver supposed to
>be used on
>- non-centrino platforms). That means less duplication of code and
>- less maintenance effort and no possibility of these two drivers
>- going out of sync.
>- Current users of speedstep_centrino with ACPI hooks are
>requested to
>- switch over to acpi-cpufreq driver. speedstep-centrino
>will continue
>- to work using older non-ACPI static table based scheme
>even after this
>- date.
>-
>-Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
>-
>----------------------------
>-
> What: /sys/firmware/acpi/namespace
> When: 2.6.21
> Why: The ACPI namespace is effectively the symbol list for
>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-02-20 0:06 Adrian Bunk
2007-02-24 14:20 ` Pallipadi, Venkatesh
@ 2007-04-06 22:30 ` Bill Davidsen
2007-04-06 22:38 ` Adrian Bunk
1 sibling, 1 reply; 15+ messages in thread
From: Bill Davidsen @ 2007-04-06 22:30 UTC (permalink / raw)
To: Adrian Bunk; +Cc: Venkatesh Pallipadi, davej, linux-kernel, cpufreq
Adrian Bunk wrote:
> This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
>
> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>
It would be really nice, when removing features used on computers which
are only a few years old, if you noted what replaces this functionality.
Yes, people can take 10-15 minutes to find and read previous discussion,
but one or two sentences who generate less concern and noise on the list.
--
Bill Davidsen <davidsen@tmr.com>
"We have more to fear from the bungling of the incompetent than from
the machinations of the wicked." - from Slashdot
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI
2007-04-06 22:30 ` Bill Davidsen
@ 2007-04-06 22:38 ` Adrian Bunk
0 siblings, 0 replies; 15+ messages in thread
From: Adrian Bunk @ 2007-04-06 22:38 UTC (permalink / raw)
To: Bill Davidsen; +Cc: Venkatesh Pallipadi, davej, linux-kernel, cpufreq
On Fri, Apr 06, 2007 at 06:30:58PM -0400, Bill Davidsen wrote:
> Adrian Bunk wrote:
> >This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.
> >
> >Signed-off-by: Adrian Bunk <bunk@stusta.de>
> >
> It would be really nice, when removing features used on computers which
> are only a few years old, if you noted what replaces this functionality.
> Yes, people can take 10-15 minutes to find and read previous discussion,
> but one or two sentences who generate less concern and noise on the list.
For everyone on linux-kernel, the text my patch removes in
feature-removal-schedule.txt should be sufficient.
Users already had a printk() stating that it was deprecated.
> Bill Davidsen
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2007-07-08 21:38 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-06 10:19 [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI Adrian Bunk
2007-04-06 10:29 ` Dave Jones
2007-04-06 10:38 ` Robert P. J. Day
2007-04-06 10:46 ` Dave Jones
-- strict thread matches above, loose matches on Subject: below --
2007-07-01 20:20 Adrian Bunk
2007-07-02 23:22 ` Dave Jones
2007-07-02 23:43 ` Adrian Bunk
2007-07-03 0:36 ` Dave Jones
2007-07-03 1:06 ` Adrian Bunk
2007-07-03 1:13 ` Dave Jones
2007-07-08 21:39 ` Adrian Bunk
2007-02-20 0:06 Adrian Bunk
2007-02-24 14:20 ` Pallipadi, Venkatesh
2007-04-06 22:30 ` Bill Davidsen
2007-04-06 22:38 ` Adrian Bunk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox