diff options
| -rw-r--r-- | drivers/acpi/processor_idle.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 63a3d4b8c238..43fe52f9834b 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
| @@ -859,6 +859,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, | |||
| 859 | struct acpi_processor *pr; | 859 | struct acpi_processor *pr; |
| 860 | struct acpi_processor_cx *cx = cpuidle_get_statedata(state); | 860 | struct acpi_processor_cx *cx = cpuidle_get_statedata(state); |
| 861 | ktime_t kt1, kt2; | 861 | ktime_t kt1, kt2; |
| 862 | s64 idle_time_ns; | ||
| 862 | s64 idle_time; | 863 | s64 idle_time; |
| 863 | s64 sleep_ticks = 0; | 864 | s64 sleep_ticks = 0; |
| 864 | 865 | ||
| @@ -900,12 +901,14 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, | |||
| 900 | sched_clock_idle_sleep_event(); | 901 | sched_clock_idle_sleep_event(); |
| 901 | acpi_idle_do_entry(cx); | 902 | acpi_idle_do_entry(cx); |
| 902 | kt2 = ktime_get_real(); | 903 | kt2 = ktime_get_real(); |
| 903 | idle_time = ktime_to_us(ktime_sub(kt2, kt1)); | 904 | idle_time_ns = ktime_to_ns(ktime_sub(kt2, kt1)); |
| 905 | idle_time = idle_time_ns; | ||
| 906 | do_div(idle_time, NSEC_PER_USEC); | ||
| 904 | 907 | ||
| 905 | sleep_ticks = us_to_pm_timer_ticks(idle_time); | 908 | sleep_ticks = us_to_pm_timer_ticks(idle_time); |
| 906 | 909 | ||
| 907 | /* Tell the scheduler how much we idled: */ | 910 | /* Tell the scheduler how much we idled: */ |
| 908 | sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS); | 911 | sched_clock_idle_wakeup_event(idle_time_ns); |
| 909 | 912 | ||
| 910 | local_irq_enable(); | 913 | local_irq_enable(); |
| 911 | current_thread_info()->status |= TS_POLLING; | 914 | current_thread_info()->status |= TS_POLLING; |
| @@ -933,6 +936,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, | |||
| 933 | struct acpi_processor *pr; | 936 | struct acpi_processor *pr; |
| 934 | struct acpi_processor_cx *cx = cpuidle_get_statedata(state); | 937 | struct acpi_processor_cx *cx = cpuidle_get_statedata(state); |
| 935 | ktime_t kt1, kt2; | 938 | ktime_t kt1, kt2; |
| 939 | s64 idle_time_ns; | ||
| 936 | s64 idle_time; | 940 | s64 idle_time; |
| 937 | s64 sleep_ticks = 0; | 941 | s64 sleep_ticks = 0; |
| 938 | 942 | ||
| @@ -1015,11 +1019,13 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, | |||
| 1015 | spin_unlock(&c3_lock); | 1019 | spin_unlock(&c3_lock); |
| 1016 | } | 1020 | } |
| 1017 | kt2 = ktime_get_real(); | 1021 | kt2 = ktime_get_real(); |
| 1018 | idle_time = ktime_to_us(ktime_sub(kt2, kt1)); | 1022 | idle_time_ns = ktime_to_us(ktime_sub(kt2, kt1)); |
| 1023 | idle_time = idle_time_ns; | ||
| 1024 | do_div(idle_time, NSEC_PER_USEC); | ||
| 1019 | 1025 | ||
| 1020 | sleep_ticks = us_to_pm_timer_ticks(idle_time); | 1026 | sleep_ticks = us_to_pm_timer_ticks(idle_time); |
| 1021 | /* Tell the scheduler how much we idled: */ | 1027 | /* Tell the scheduler how much we idled: */ |
| 1022 | sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS); | 1028 | sched_clock_idle_wakeup_event(idle_time_ns); |
| 1023 | 1029 | ||
| 1024 | local_irq_enable(); | 1030 | local_irq_enable(); |
| 1025 | current_thread_info()->status |= TS_POLLING; | 1031 | current_thread_info()->status |= TS_POLLING; |
