RE: [3/4] ACPI C-States: only demote on current bus mastering activity

From: Brown, Len
Date: Wed Jun 28 2006 - 03:27:15 EST


applied.
thanks,
-Len

>-----Original Message-----
>From: Dominik Brodowski [mailto:linux@xxxxxxxxxxxxxxxxxxxx]
>Sent: Monday, June 19, 2006 5:31 PM
>To: Thomas Gleixner; Brown, Len
>Cc: Con Kolivas; Ingo Molnar; LKML; Andrew Morton; john stultz
>Subject: [3/4] ACPI C-States: only demote on current bus
>mastering activity
>
>Only if bus master activity is going on at the present, we should
>avoid entering C3-type sleep, as it might be a faulty
>transition. As long
>as the bm_activity bitmask was based on the number of calls to the ACPI
>idle function, looking at previous moments made sense. Now,
>with it being
>based on what happened this jiffy, looking at this jiffy should be
>sufficient.
>
>Signed-off-by: Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx>
>
> drivers/acpi/processor_idle.c | 7 ++++---
> 1 files changed, 4 insertions(+), 3 deletions(-)
>
>Index: linux-2.6.16-rc5-dt/drivers/acpi/processor_idle.c
>===================================================================
>--- linux-2.6.16-rc5-dt.orig/drivers/acpi/processor_idle.c
>2006-02-27 20:32:58.000000000 +1100
>+++ linux-2.6.16-rc5-dt/drivers/acpi/processor_idle.c
>2006-02-27 20:32:59.000000000 +1100
>@@ -287,10 +287,10 @@ static void acpi_processor_idle(void)
> pr->power.bm_check_timestamp = jiffies;
>
> /*
>- * Apply bus mastering demotion policy.
>Automatically demote
>+ * If bus mastering is or was active this jiffy, demote
> * to avoid a faulty transition. Note that the
>processor
> * won't enter a low-power state during this
>call (to this
>- * funciton) but should upon the next.
>+ * function) but should upon the next.
> *
> * TBD: A better policy might be to fallback to
>the demotion
> * state (use it for this quantum only) istead of
>@@ -298,7 +298,8 @@ static void acpi_processor_idle(void)
> * qualification. This may, however, introduce DMA
> * issues (e.g. floppy DMA transfer
>overrun/underrun).
> */
>- if (pr->power.bm_activity & cx->demotion.threshold.bm) {
>+ if ((pr->power.bm_activity & 0x1) &&
>+ cx->demotion.threshold.bm) {
> local_irq_enable();
> next_state = cx->demotion.state;
> goto end;
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/