Commit bceefad5 authored by Venkatesh Pallipadi's avatar Venkatesh Pallipadi Committed by Len Brown

ACPI: Eliminate us to pm ticks conversion in common path

acpi_enter_[simple|bm] routines does us to pm tick conversion on every
idle wakeup and the value is only used in /proc/acpi display. We can
store the time in us and convert it into pm ticks before printing instead and
avoid the conversion in the common path.
Signed-off-by: default avatarVenkatesh Pallipadi <venki@google.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 157317ba
...@@ -80,7 +80,7 @@ module_param(nocst, uint, 0000); ...@@ -80,7 +80,7 @@ module_param(nocst, uint, 0000);
static unsigned int latency_factor __read_mostly = 2; static unsigned int latency_factor __read_mostly = 2;
module_param(latency_factor, uint, 0644); module_param(latency_factor, uint, 0644);
static s64 us_to_pm_timer_ticks(s64 t) static u64 us_to_pm_timer_ticks(s64 t)
{ {
return div64_u64(t * PM_TIMER_FREQUENCY, 1000000); return div64_u64(t * PM_TIMER_FREQUENCY, 1000000);
} }
...@@ -731,10 +731,10 @@ static int acpi_processor_power_seq_show(struct seq_file *seq, void *offset) ...@@ -731,10 +731,10 @@ static int acpi_processor_power_seq_show(struct seq_file *seq, void *offset)
seq_puts(seq, "demotion[--] "); seq_puts(seq, "demotion[--] ");
seq_printf(seq, "latency[%03d] usage[%08d] duration[%020llu]\n", seq_printf(seq, "latency[%03d] usage[%08d] duration[%020Lu]\n",
pr->power.states[i].latency, pr->power.states[i].latency,
pr->power.states[i].usage, pr->power.states[i].usage,
(unsigned long long)pr->power.states[i].time); us_to_pm_timer_ticks(pr->power.states[i].time));
} }
end: end:
...@@ -861,7 +861,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, ...@@ -861,7 +861,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
ktime_t kt1, kt2; ktime_t kt1, kt2;
s64 idle_time_ns; s64 idle_time_ns;
s64 idle_time; s64 idle_time;
s64 sleep_ticks = 0;
pr = __get_cpu_var(processors); pr = __get_cpu_var(processors);
...@@ -906,8 +905,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, ...@@ -906,8 +905,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
idle_time = idle_time_ns; idle_time = idle_time_ns;
do_div(idle_time, NSEC_PER_USEC); do_div(idle_time, NSEC_PER_USEC);
sleep_ticks = us_to_pm_timer_ticks(idle_time);
/* Tell the scheduler how much we idled: */ /* Tell the scheduler how much we idled: */
sched_clock_idle_wakeup_event(idle_time_ns); sched_clock_idle_wakeup_event(idle_time_ns);
...@@ -918,7 +915,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, ...@@ -918,7 +915,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
cx->usage++; cx->usage++;
lapic_timer_state_broadcast(pr, cx, 0); lapic_timer_state_broadcast(pr, cx, 0);
cx->time += sleep_ticks; cx->time += idle_time;
return idle_time; return idle_time;
} }
...@@ -940,7 +937,6 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, ...@@ -940,7 +937,6 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
ktime_t kt1, kt2; ktime_t kt1, kt2;
s64 idle_time_ns; s64 idle_time_ns;
s64 idle_time; s64 idle_time;
s64 sleep_ticks = 0;
pr = __get_cpu_var(processors); pr = __get_cpu_var(processors);
...@@ -1026,7 +1022,6 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, ...@@ -1026,7 +1022,6 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
idle_time = idle_time_ns; idle_time = idle_time_ns;
do_div(idle_time, NSEC_PER_USEC); do_div(idle_time, NSEC_PER_USEC);
sleep_ticks = us_to_pm_timer_ticks(idle_time);
/* Tell the scheduler how much we idled: */ /* Tell the scheduler how much we idled: */
sched_clock_idle_wakeup_event(idle_time_ns); sched_clock_idle_wakeup_event(idle_time_ns);
...@@ -1037,7 +1032,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, ...@@ -1037,7 +1032,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
cx->usage++; cx->usage++;
lapic_timer_state_broadcast(pr, cx, 0); lapic_timer_state_broadcast(pr, cx, 0);
cx->time += sleep_ticks; cx->time += idle_time;
return idle_time; return idle_time;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment