All of lore.kernel.org
 help / color / mirror / Atom feed
* noise from Dell laptops
@ 2004-08-09 17:14 Len Brown
  2004-08-11  1:42 ` Ow Mun Heng
  2004-08-11  6:25 ` Stefan Seyfried
  0 siblings, 2 replies; 4+ messages in thread
From: Len Brown @ 2004-08-09 17:14 UTC (permalink / raw)
  To: ACPI Developers; +Cc: Matt Domsch

[-- Attachment #1: Type: text/plain, Size: 139 bytes --]

Do people with Dell laptops that are make noise in idle
find that Jos's patch along with acpi_cstate_limit=2
makes it quiet?

thanks,
-Len

[-- Attachment #2: Forwarded message - Re: Linux ACPI processor driver patch: user-definable power state limit --]
[-- Type: message/rfc822, Size: 13186 bytes --]

[-- Attachment #2.1.1: Type: text/html, Size: 5185 bytes --]

[-- Attachment #2.1.2: processor.c.diff --]
[-- Type: text/x-diff, Size: 4384 bytes --]

--- /usr/src/linux/drivers/acpi/processor.c	2004-08-07 18:25:15.064497551 +0200
+++ processor.c	2004-08-07 18:31:24.013809421 +0200
@@ -30,6 +30,14 @@
  *	4. Need C1 timing -- must modify kernel (IRQ handler) to get this.
  */
 
+/*
+ * 07/08/04; Jos Delbar <jos.delbar-Cru1EgDzd7c@public.gmane.org>:
+ * Recognize power state limit as a boot parameter.
+ *
+ * 31/07/04; Jos Delbar <jos.delbar-Cru1EgDzd7c@public.gmane.org>:
+ * Add user-definable processor power state limit.
+ */
+
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -80,6 +88,16 @@
 MODULE_DESCRIPTION(ACPI_PROCESSOR_DRIVER_NAME);
 MODULE_LICENSE("GPL");
 
+/*
+ * The acpi_cstate_limit module parameter represents the maximum processor power state or
+ * C state to promote to. Values of 1, 2 and 3 are equivalent to the C1, C2 and C3 sleep
+ * states, respectively. A value of 0 disables processor power management altogether.
+ */
+
+static int acpi_cstate_limit = ACPI_C_STATES_MAX;
+
+module_param(acpi_cstate_limit, int, S_IRUSR | S_IRGRP | S_IROTH);
+MODULE_PARM_DESC(acpi_cstate_limit, "Limit the processor power state (0 = disable power management)");
 
 static int acpi_processor_add (struct acpi_device *device);
 static int acpi_processor_remove (struct acpi_device *device, int type);
@@ -449,6 +467,7 @@
 		sleep_ticks = ticks_elapsed(t1, t2) - cx->latency_ticks - C3_OVERHEAD;
 		break;
 
+	case ACPI_STATE_C0:
 	default:
 		local_irq_enable();
 		return;
@@ -535,7 +554,7 @@
 	 * C0/C1
 	 * -----
 	 */
-	pr->power.state = ACPI_STATE_C1;
+	pr->power.state = (acpi_cstate_limit != ACPI_STATE_C0 ? ACPI_STATE_C1 : ACPI_STATE_C0);
 	pr->power.default_state = ACPI_STATE_C1;
 
 	/*
@@ -554,7 +573,7 @@
 	 * TBD: Demote to default C-State after long periods of activity.
 	 * TBD: Investigate policy's use of CPU utilization -vs- sleep duration.
 	 */
-	if (pr->power.states[ACPI_STATE_C2].valid) {
+	if (pr->power.states[ACPI_STATE_C2].valid && (acpi_cstate_limit >= ACPI_STATE_C2)) {
 		pr->power.states[ACPI_STATE_C1].promotion.threshold.count = 10;
 		pr->power.states[ACPI_STATE_C1].promotion.threshold.ticks =
 			pr->power.states[ACPI_STATE_C2].latency_ticks;
@@ -575,7 +594,7 @@
 	 * short or whenever bus mastering activity occurs.
 	 */
 	if ((pr->power.states[ACPI_STATE_C2].valid) &&
-		(pr->power.states[ACPI_STATE_C3].valid)) {
+		(pr->power.states[ACPI_STATE_C3].valid) && (acpi_cstate_limit >= ACPI_STATE_C3)) {
 		pr->power.states[ACPI_STATE_C2].promotion.threshold.count = 4;
 		pr->power.states[ACPI_STATE_C2].promotion.threshold.ticks =
 			pr->power.states[ACPI_STATE_C3].latency_ticks;
@@ -1859,10 +1878,15 @@
 		goto end;
 
 	seq_printf(seq, "active state:            C%d\n"
-			"default state:           C%d\n"
-			"bus master activity:     %08x\n",
+			"default state:           C%d\n",
 			pr->power.state,
-			pr->power.default_state,
+			pr->power.default_state);
+
+	if (acpi_cstate_limit < ACPI_C_STATES_MAX) seq_printf(seq,
+			"user limit:              C%d\n",
+			acpi_cstate_limit);
+
+	seq_printf(seq, "bus master activity:     %08x\n",
 			pr->power.bm_activity);
 
 	seq_puts(seq, "states:\n");
@@ -1876,6 +1900,11 @@
 			continue;
 		}
 
+		if (i > acpi_cstate_limit) {
+			seq_puts(seq, "<disabled>\n");
+			continue;
+		}
+
 		if (pr->power.states[i].promotion.state)
 			seq_printf(seq, "promotion[C%d] ",
 				pr->power.states[i].promotion.state);
@@ -2384,7 +2413,7 @@
 	
 	printk(KERN_INFO PREFIX "%s [%s] (supports",
 		acpi_device_name(device), acpi_device_bid(device));
-	for (i=1; i<ACPI_C_STATE_COUNT; i++)
+	for (i=0; i<=acpi_cstate_limit; i++)
 		if (pr->power.states[i].valid)
 			printk(" C%d", i);
 	if (pr->flags.throttling)
@@ -2417,7 +2446,7 @@
 	pr = (struct acpi_processor *) acpi_driver_data(device);
 
 	/* Unregister the idle handler when processor #0 is removed. */
-	if (pr->id == 0)
+	if ((pr->id == 0) && (pr->flags.power))
 		pm_idle = pm_idle_save;
 
 	status = acpi_remove_notify_handler(pr->handle, ACPI_DEVICE_NOTIFY, 
@@ -2447,6 +2476,10 @@
 	memset(&processors, 0, sizeof(processors));
 	memset(&errata, 0, sizeof(errata));
 
+	/* Check for illegal user limits. */
+	if(acpi_cstate_limit < ACPI_STATE_C0 || acpi_cstate_limit > ACPI_C_STATES_MAX)
+		return_VALUE(-EINVAL);
+
 	acpi_processor_dir = proc_mkdir(ACPI_PROCESSOR_CLASS, acpi_root_dir);
 	if (!acpi_processor_dir)
 		return_VALUE(-ENODEV);

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: noise from Dell laptops
  2004-08-09 17:14 noise from Dell laptops Len Brown
@ 2004-08-11  1:42 ` Ow Mun Heng
  2004-08-11  6:25 ` Stefan Seyfried
  1 sibling, 0 replies; 4+ messages in thread
From: Ow Mun Heng @ 2004-08-11  1:42 UTC (permalink / raw)
  To: ACPI Developers

[-- Attachment #1: winmail.dat --]
[-- Type: application/ms-tnef, Size: 625 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: noise from Dell laptops
  2004-08-09 17:14 noise from Dell laptops Len Brown
  2004-08-11  1:42 ` Ow Mun Heng
@ 2004-08-11  6:25 ` Stefan Seyfried
  1 sibling, 0 replies; 4+ messages in thread
From: Stefan Seyfried @ 2004-08-11  6:25 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Mon, Aug 09, 2004 at 01:14:34PM -0400, Len Brown wrote:
> Do people with Dell laptops that are make noise in idle
> find that Jos's patch along with acpi_cstate_limit=2
> makes it quiet?

my D600 does not buzz even when using C3, but since apparently there are
still some device drivers around which have problems with C3, this option
may be of use for other people, too.
-- 
Stefan Seyfried



-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: noise from Dell laptops
@ 2004-08-13 16:45 Jos Delbar
  0 siblings, 0 replies; 4+ messages in thread
From: Jos Delbar @ 2004-08-13 16:45 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

>  Do people with Dell laptops that are make noise in idle
>  find that Jos"s patch along with acpi_cstate_limit=2
>  makes it quiet?
>  
>  thanks,
>  -Len

On my Dell Inspiron 500m the buzzing noise only disappears when limiting to C1 
(acpi_cstate_limit=1). Limiting to C2 does not seem to make a noticeable 
difference.

- Jos


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-08-13 16:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-09 17:14 noise from Dell laptops Len Brown
2004-08-11  1:42 ` Ow Mun Heng
2004-08-11  6:25 ` Stefan Seyfried
2004-08-13 16:45 Jos Delbar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.