LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [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(&centrino_driver);
 }
 
 static void __exit centrino_exit(void)
 {
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-	unsigned int j;
-#endif
-	
 	cpufreq_unregister_driver(&centrino_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 [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI 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(&centrino_driver);
> }
> 
> static void __exit centrino_exit(void)
> {
>-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
>-	unsigned int j;
>-#endif
>-	
> 	cpufreq_unregister_driver(&centrino_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 [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI 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

* [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(&centrino_driver);
 }
 
 static void __exit centrino_exit(void)
 {
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-	unsigned int j;
-#endif
-	
 	cpufreq_unregister_driver(&centrino_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

* 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

* 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-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

* [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(&centrino_driver);
 }
 
 static void __exit centrino_exit(void)
 {
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-	unsigned int j;
-#endif
-	
 	cpufreq_unregister_driver(&centrino_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-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(&centrino_driver);
 }
 
 static void __exit centrino_exit(void)
 {
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-	unsigned int j;
-#endif
-	
 	cpufreq_unregister_driver(&centrino_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: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

* 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:19 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

* [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(&centrino_driver);
 }
 
 static void __exit centrino_exit(void)
 {
-#ifdef CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
-	unsigned int j;
-#endif
-	
 	cpufreq_unregister_driver(&centrino_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

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-02-20  0:06 [2.6 patch] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI Adrian Bunk
2007-02-24 14:20 ` Pallipadi, Venkatesh
2007-04-06 22:30 ` Bill Davidsen
2007-04-06 22:38   ` Adrian Bunk
2007-04-06 10:19 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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).