Commit d659f9b1 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by John Stultz

hwmon: ibmaem: Use ktime_get_ns()

Using the wall clock time for delta time calculations is wrong to
begin with because wall clock time can be set from userspace and NTP.
Such data wants to be based on clock monotonic.

The calculations also are done on a nanosecond basis. Use the
nanoseconds based interface right away.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Jean Delvare <jdelvare@suse.de>
Acked-by: default avatarJean Delvare <jdelvare@suse.de>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent 5eaaed4f
......@@ -842,11 +842,10 @@ static ssize_t aem_show_power(struct device *dev,
struct aem_data *data = dev_get_drvdata(dev);
u64 before, after, delta, time;
signed long leftover;
struct timespec b, a;
mutex_lock(&data->lock);
update_aem_energy_one(data, attr->index);
getnstimeofday(&b);
time = ktime_get_ns();
before = data->energy[attr->index];
leftover = schedule_timeout_interruptible(
......@@ -858,11 +857,10 @@ static ssize_t aem_show_power(struct device *dev,
}
update_aem_energy_one(data, attr->index);
getnstimeofday(&a);
time = ktime_get_ns() - time;
after = data->energy[attr->index];
mutex_unlock(&data->lock);
time = timespec_to_ns(&a) - timespec_to_ns(&b);
delta = (after - before) * UJ_PER_MJ;
return sprintf(buf, "%llu\n",
......
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