linux_dsm_epyc7002/drivers/base/power
Vincent Guittot c155f6499f PM-runtime: Switch accounting over to ktime_get_mono_fast_ns()
Similar to what happened whith autosuspend, a deadlock has been
reported with PM-runtime accounting in the call path:

change_clocksource
    ...
    write_seqcount_begin
    ...
    timekeeping_update
        ...
        sh_cmt_clocksource_enable
            ...
            rpm_resume
                update_pm_runtime_accounting
                    ktime_get
                        do
                            read_seqcount_begin
                        while read_seqcount_retry
    ....
    write_seqcount_end

Make PM-runtime accounting use ktime_get_mono_fast_ns() to avoid this
problem.

With ktime_get_mono_fast_ns(), the timestamp is not guaranteed to be
monotonic across an update of timekeeping and as a result time can go
backward. Add a test to skip accounting for such situation which should
stay exceptional.

Fixes: a08c2a5a31 ("PM-runtime: Replace jiffies-based accounting with ktime-based accounting")
Reported-by: Biju Das <biju.das@bp.renesas.com>
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
[ rjw: Subject, changelog, comment cleanup ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2019-02-05 12:04:39 +01:00
..
clock_ops.c PM: clock_ops: fix missing clk_prepare() return value check 2019-01-18 11:47:07 +01:00
common.c PM / Domains: Introduce dev_pm_domain_attach_by_name() 2018-07-09 12:11:02 +02:00
domain_governor.c PM / QoS: Fix device resume latency framework 2017-11-08 12:14:51 +01:00
domain.c Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-sleep' 2018-12-21 10:06:44 +01:00
generic_ops.c PM / sleep: Remove pm_complete_with_resume_check() 2017-10-11 15:40:29 +02:00
main.c PM: sleep: call devfreq suspend/resume 2019-01-02 23:07:41 +01:00
Makefile Merge branches 'pm-cpufreq-sched' and 'pm-opp' 2017-11-13 01:40:52 +01:00
power.h PM / core: Drop unused internal inline functions for sysfs 2018-05-10 11:55:12 +02:00
qos.c PM / QoS: Fix device resume latency framework 2017-11-08 12:14:51 +01:00
runtime.c PM-runtime: Switch accounting over to ktime_get_mono_fast_ns() 2019-02-05 12:04:39 +01:00
sysfs.c PM-runtime: Replace jiffies-based accounting with ktime-based accounting 2019-01-31 10:45:10 +01:00
trace.c PM: Switch to use %ptR 2018-12-10 22:40:18 +01:00
wakeirq.c PM / wakeirq: Add wakeup name to dedicated wake irqs 2018-02-26 23:23:37 +01:00
wakeup.c Merge branches 'pm-pci', 'acpi-pm', 'pm-sleep' and 'pm-avs' 2018-06-04 10:41:53 +02:00