This patch removes cpuidle_get_bm_activity() and updates governors
accordingly.

Please Apply,
Adam

Change Summary:
 drivers/cpuidle/driver.c           |   13 ----------
 drivers/cpuidle/governors/ladder.c |   46 -------------------------------------
 drivers/cpuidle/governors/menu.c   |   26 +-------------------
 include/linux/cpuidle.h            |    4 ---
 4 files changed, 3 insertions(+), 86 deletions(-)
---

diff -urN a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
--- a/drivers/cpuidle/driver.c  2007-08-15 21:51:46.000000000 -0400
+++ b/drivers/cpuidle/driver.c  2007-08-15 22:07:59.000000000 -0400
@@ -54,16 +54,3 @@
 }
 
 EXPORT_SYMBOL_GPL(cpuidle_unregister_driver);
-
-/**
- * cpuidle_get_bm_activity - determines if BM activity has occured
- */
-int cpuidle_get_bm_activity(void)
-{
-       if (cpuidle_curr_driver->bm_check)
-               return cpuidle_curr_driver->bm_check();
-       else
-               return 0;
-}
-
-EXPORT_SYMBOL_GPL(cpuidle_get_bm_activity);
diff -urN a/drivers/cpuidle/governors/ladder.c 
b/drivers/cpuidle/governors/ladder.c
--- a/drivers/cpuidle/governors/ladder.c        2007-08-15 21:51:46.000000000 
-0400
+++ b/drivers/cpuidle/governors/ladder.c        2007-08-15 22:23:18.000000000 
-0400
@@ -24,24 +24,12 @@
 #define PROMOTION_COUNT 4
 #define DEMOTION_COUNT 1
 
-/*
- * bm_history -- bit-mask with a bit per jiffy of bus-master activity
- * 1000 HZ: 0xFFFFFFFF: 32 jiffies = 32ms
- * 800 HZ: 0xFFFFFFFF: 32 jiffies = 40ms
- * 100 HZ: 0x0000000F: 4 jiffies = 40ms
- * reduce history for more aggressive entry into C3
- */
-static unsigned int bm_history __read_mostly =
-    (HZ >= 800 ? 0xFFFFFFFF : ((1U << (HZ / 25)) - 1));
-module_param(bm_history, uint, 0644);
-
 struct ladder_device_state {
        struct {
                u32 promotion_count;
                u32 demotion_count;
                u32 promotion_time;
                u32 demotion_time;
-               u32 bm;
        } threshold;
        struct {
                int promotion_count;
@@ -51,9 +39,6 @@
 
 struct ladder_device {
        struct ladder_device_state states[CPUIDLE_STATE_MAX];
-       unsigned int bm_check:1;
-       unsigned long bm_check_timestamp;
-       unsigned long bm_activity; /* FIXME: bm activity should be global */
        int last_state_idx;
 };
 
@@ -88,26 +73,6 @@
 
        last_state = &ldev->states[last_idx];
 
-       /* demote if within BM threshold */
-       if (ldev->bm_check) {
-               unsigned long diff;
-
-               diff = jiffies - ldev->bm_check_timestamp;
-               if (diff > 31)
-                       diff = 31;
-
-               ldev->bm_activity <<= diff;
-               if (cpuidle_get_bm_activity())
-                       ldev->bm_activity |= ((1 << diff) - 1);
-
-               ldev->bm_check_timestamp = jiffies;
-               if ((last_idx > 0) &&
-                   (last_state->threshold.bm & ldev->bm_activity)) {
-                       ladder_do_selection(ldev, last_idx, last_idx - 1);
-                       return last_idx - 1;
-               }
-       }
-
        if (dev->states[last_idx].flags & CPUIDLE_FLAG_TIME_VALID)
                last_residency = cpuidle_get_last_residency(dev) - 
dev->states[last_idx].exit_latency;
        else
@@ -146,14 +111,12 @@
  */
 static int ladder_enable_device(struct cpuidle_device *dev)
 {
-       int i, bm_check = 0;
+       int i;
        struct ladder_device *ldev = &per_cpu(ladder_devices, dev->cpu);
        struct ladder_device_state *lstate;
        struct cpuidle_state *state;
 
        ldev->last_state_idx = 0;
-       ldev->bm_check_timestamp = 0;
-       ldev->bm_activity = 0;
 
        for (i = 0; i < dev->state_count; i++) {
                state = &dev->states[i];
@@ -169,15 +132,8 @@
                        lstate->threshold.promotion_time = state->exit_latency;
                if (i > 0)
                        lstate->threshold.demotion_time = state->exit_latency;
-               if (state->flags & CPUIDLE_FLAG_CHECK_BM) {
-                       lstate->threshold.bm = bm_history;
-                       bm_check = 1;
-               } else
-                       lstate->threshold.bm = 0;
        }
 
-       ldev->bm_check = bm_check;
-
        return 0;
 }
 
diff -urN a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
--- a/drivers/cpuidle/governors/menu.c  2007-08-15 21:57:19.000000000 -0400
+++ b/drivers/cpuidle/governors/menu.c  2007-08-15 22:24:10.000000000 -0400
@@ -14,7 +14,6 @@
 #include <linux/hrtimer.h>
 #include <linux/tick.h>
 
-#define BM_HOLDOFF     2000    /* 2 ms */
 #define BREAK_FUZZ     4       /* 4 us */
 
 struct menu_device {
@@ -24,10 +23,6 @@
        unsigned int    predicted_us;
        unsigned int    last_measured_us;
        unsigned int    elapsed_us;
-
-       int             deepest_bm_state;
-       unsigned int    bm_elapsed_us;
-       unsigned int    bm_holdoff_us;
 };
 
 static DEFINE_PER_CPU(struct menu_device, menu_devices);
@@ -39,20 +34,14 @@
 static int menu_select(struct cpuidle_device *dev)
 {
        struct menu_device *data = &__get_cpu_var(menu_devices);
-       int i, max_state = dev->state_count;
+       int i;
 
        /* determine the expected residency time */
        data->expected_us =
                (u32) ktime_to_ns(tick_nohz_get_sleep_length()) / 1000;
 
-       /* determine the maximum state compatible with current BM status */
-       if (cpuidle_get_bm_activity())
-               data->bm_elapsed_us = 0;
-       if (data->bm_elapsed_us <= data->bm_holdoff_us)
-               max_state = data->deepest_bm_state + 1;
-
        /* find the deepest idle state that satisfies our constraints */
-       for (i = 1; i < max_state; i++) {
+       for (i = 1; i < dev->state_count; i++) {
                struct cpuidle_state *s = &dev->states[i];
 
                if (s->target_residency > data->expected_us)
@@ -91,10 +80,6 @@
        if (!(target->flags & CPUIDLE_FLAG_TIME_VALID))
                measured_us = USEC_PER_SEC / HZ;
 
-       /* Update time elapsed since last BM detection */
-       if (data->bm_elapsed_us <= data->bm_holdoff_us)
-               data->bm_elapsed_us += measured_us;
-
        /* Predict time remaining until next break event */
        if (measured_us + BREAK_FUZZ < data->expected_us - 
target->exit_latency) {
                data->predicted_us = max(measured_us, data->last_measured_us);
@@ -116,15 +101,8 @@
 static int menu_enable_device(struct cpuidle_device *dev)
 {
        struct menu_device *data = &per_cpu(menu_devices, dev->cpu);
-       int i;
 
        memset(data, 0, sizeof(struct menu_device));
-       data->bm_holdoff_us = BM_HOLDOFF;
-
-       for (i = 1; i < dev->state_count; i++)
-               if (dev->states[i].flags & CPUIDLE_FLAG_CHECK_BM)
-                       break;
-       data->deepest_bm_state = i - 1;
 
        return 0;
 }
diff -urN a/include/linux/cpuidle.h b/include/linux/cpuidle.h
--- a/include/linux/cpuidle.h   2007-08-15 21:52:11.000000000 -0400
+++ b/include/linux/cpuidle.h   2007-08-15 22:07:40.000000000 -0400
@@ -114,7 +114,6 @@
 
 struct cpuidle_driver {
        char                    name[CPUIDLE_NAME_LEN];
-       int  (*bm_check)        (void);
        struct module           *owner;
 };
 
@@ -169,15 +168,12 @@
 
 extern int cpuidle_register_governor(struct cpuidle_governor *gov);
 extern void cpuidle_unregister_governor(struct cpuidle_governor *gov);
-extern int cpuidle_get_bm_activity(void);
 
 #else
 
 static inline int cpuidle_register_governor(struct cpuidle_governor *gov)
 {return 0;}
 static inline void cpuidle_unregister_governor(struct cpuidle_governor *gov) { 
}
-static inline int cpuidle_get_bm_activity(void)
-{return 0;}
 
 #endif
 


-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to