| From bdf8107f9e58c5563946d7cb46e1bed307ce2653 Mon Sep 17 00:00:00 2001 |
| From: Deepthi Dharwar <deepthi@linux.vnet.ibm.com> |
| Date: Fri, 28 Oct 2011 16:20:24 +0530 |
| Subject: cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev->prepare() |
| |
| The cpuidle_device->prepare() mechanism causes updates to the |
| cpuidle_state[].flags, setting and clearing CPUIDLE_FLAG_IGNORE |
| to tell the governor not to chose a state on a per-cpu basis at |
| run-time. State demotion is now handled by the driver and it returns |
| the actual state entered. Hence, this mechanism is not required. |
| Also this removes per-cpu flags from cpuidle_state enabling |
| it to be made global. |
| |
| Reference: |
| https://lkml.org/lkml/2011/3/25/52 |
| |
| Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm> |
| Signed-off-by: Trinabh Gupta <g.trinabh@gmail.com> |
| Tested-by: Jean Pihet <j-pihet@ti.com> |
| Acked-by: Arjan van de Ven <arjan@linux.intel.com> |
| Reviewed-by: Kevin Hilman <khilman@ti.com> |
| Signed-off-by: Len Brown <len.brown@intel.com> |
| (cherry picked from commit b25edc42bfb9602f0503474b2c94701d5536ce60) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/cpuidle/cpuidle.c | 10 ---------- |
| drivers/cpuidle/governors/menu.c | 2 -- |
| include/linux/cpuidle.h | 3 --- |
| 3 files changed, 15 deletions(-) |
| |
| diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c |
| index c0f1a3a..70350d2 100644 |
| --- a/drivers/cpuidle/cpuidle.c |
| +++ b/drivers/cpuidle/cpuidle.c |
| @@ -84,16 +84,6 @@ int cpuidle_idle_call(void) |
| hrtimer_peek_ahead_timers(); |
| #endif |
| |
| - /* |
| - * Call the device's prepare function before calling the |
| - * governor's select function. ->prepare gives the device's |
| - * cpuidle driver a chance to update any dynamic information |
| - * of its cpuidle states for the current idle period, e.g. |
| - * state availability, latencies, residencies, etc. |
| - */ |
| - if (dev->prepare) |
| - dev->prepare(dev); |
| - |
| /* ask the governor for the next state */ |
| next_state = cpuidle_curr_governor->select(dev); |
| if (need_resched()) { |
| diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c |
| index e27a2af..2072aeb 100644 |
| --- a/drivers/cpuidle/governors/menu.c |
| +++ b/drivers/cpuidle/governors/menu.c |
| @@ -289,8 +289,6 @@ static int menu_select(struct cpuidle_device *dev) |
| for (i = CPUIDLE_DRIVER_STATE_START; i < dev->state_count; i++) { |
| struct cpuidle_state *s = &dev->states[i]; |
| |
| - if (s->flags & CPUIDLE_FLAG_IGNORE) |
| - continue; |
| if (s->target_residency > data->predicted_us) |
| continue; |
| if (s->exit_latency > latency_req) |
| diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h |
| index 8da811b..c6d85cf 100644 |
| --- a/include/linux/cpuidle.h |
| +++ b/include/linux/cpuidle.h |
| @@ -47,7 +47,6 @@ struct cpuidle_state { |
| |
| /* Idle State Flags */ |
| #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */ |
| -#define CPUIDLE_FLAG_IGNORE (0x100) /* ignore during this idle period */ |
| |
| #define CPUIDLE_DRIVER_FLAGS_MASK (0xFFFF0000) |
| |
| @@ -93,8 +92,6 @@ struct cpuidle_device { |
| struct completion kobj_unregister; |
| void *governor_data; |
| int safe_state_index; |
| - |
| - int (*prepare) (struct cpuidle_device *dev); |
| }; |
| |
| DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices); |
| -- |
| 1.7.10.1.362.g242cab3 |
| |