Message ID | 20180618144210.72367-1-arnd@arndb.de |
---|---|
State | New |
Headers | show |
Series | leds: ledtrig-activity: use ktime_get_boot_ns() | expand |
On Mon, Jun 18, 2018 at 5:07 PM, Pavel Machek <pavel@ucw.cz> wrote: > Hi! > >> get_monotonic_boottime() is deprecated, so let's convert this to >> the simpler ktime_get_boot_ns(). >> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Have you tested it? No, only build-tested. >> diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c >> index 5081894082bd..589c1bc4d0b9 100644 >> --- a/drivers/leds/trigger/ledtrig-activity.c >> +++ b/drivers/leds/trigger/ledtrig-activity.c >> @@ -37,7 +37,6 @@ static void led_activity_function(struct timer_list *t) >> struct activity_data *activity_data = from_timer(activity_data, t, >> timer); >> struct led_classdev *led_cdev = activity_data->led_cdev; >> - struct timespec boot_time; >> unsigned int target; >> unsigned int usage; >> int delay; >> @@ -57,7 +56,7 @@ static void led_activity_function(struct timer_list *t) >> return; >> } >> >> - get_monotonic_boottime(&boot_time); >> + curr_boot = ktime_get_boot_ns(); >> >> cpus = 0; >> curr_used = 0; >> @@ -76,7 +75,6 @@ static void led_activity_function(struct timer_list *t) >> * down to 16us, ensuring we won't overflow 32-bit computations below >> * even up to 3k CPUs, while keeping divides cheap on smaller systems. >> */ >> - curr_boot = timespec_to_ns(&boot_time) * cpus; > > Original code is pretty weird (notice the * cpus), so I'm > double-checking. Ok, dropping the *cpus was not intentional, I'll repost a version that puts it that back. Thanks for pointing this out! Arnd
> >> index 5081894082bd..589c1bc4d0b9 100644 > >> --- a/drivers/leds/trigger/ledtrig-activity.c > >> +++ b/drivers/leds/trigger/ledtrig-activity.c > >> @@ -37,7 +37,6 @@ static void led_activity_function(struct timer_list *t) > >> struct activity_data *activity_data = from_timer(activity_data, t, > >> timer); > >> struct led_classdev *led_cdev = activity_data->led_cdev; > >> - struct timespec boot_time; > >> unsigned int target; > >> unsigned int usage; > >> int delay; > >> @@ -57,7 +56,7 @@ static void led_activity_function(struct timer_list *t) > >> return; > >> } > >> > >> - get_monotonic_boottime(&boot_time); > >> + curr_boot = ktime_get_boot_ns(); > >> > >> cpus = 0; > >> curr_used = 0; > >> @@ -76,7 +75,6 @@ static void led_activity_function(struct timer_list *t) > >> * down to 16us, ensuring we won't overflow 32-bit computations below > >> * even up to 3k CPUs, while keeping divides cheap on smaller systems. > >> */ > >> - curr_boot = timespec_to_ns(&boot_time) * cpus; > > > > Original code is pretty weird (notice the * cpus), so I'm > > double-checking. > > Ok, dropping the *cpus was not intentional, I'll repost a version that puts > it that back. Thanks for pointing this out! Feel free to add my Acked-by to fixed version. Thanks, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi Arnd, On Mon, Jun 18, 2018 at 05:47:28PM +0200, Arnd Bergmann wrote: > On Mon, Jun 18, 2018 at 5:07 PM, Pavel Machek <pavel@ucw.cz> wrote: > >> diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c > >> index 5081894082bd..589c1bc4d0b9 100644 > >> --- a/drivers/leds/trigger/ledtrig-activity.c > >> +++ b/drivers/leds/trigger/ledtrig-activity.c > >> @@ -37,7 +37,6 @@ static void led_activity_function(struct timer_list *t) > >> struct activity_data *activity_data = from_timer(activity_data, t, > >> timer); > >> struct led_classdev *led_cdev = activity_data->led_cdev; > >> - struct timespec boot_time; > >> unsigned int target; > >> unsigned int usage; > >> int delay; > >> @@ -57,7 +56,7 @@ static void led_activity_function(struct timer_list *t) > >> return; > >> } > >> > >> - get_monotonic_boottime(&boot_time); > >> + curr_boot = ktime_get_boot_ns(); > >> > >> cpus = 0; > >> curr_used = 0; > >> @@ -76,7 +75,6 @@ static void led_activity_function(struct timer_list *t) > >> * down to 16us, ensuring we won't overflow 32-bit computations below > >> * even up to 3k CPUs, while keeping divides cheap on smaller systems. > >> */ > >> - curr_boot = timespec_to_ns(&boot_time) * cpus; > > > > Original code is pretty weird (notice the * cpus), so I'm > > double-checking. > > Ok, dropping the *cpus was not intentional, I'll repost a version that puts > it that back. Thanks for pointing this out! Pavel is right, the *cpus is intentional. curr_boot contains the cumulated time for all CPUs in order to measure an average usage over all of them. By keeping it scaled by #cpus we avoid useless divides. Cheers, Willy
diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c index 5081894082bd..589c1bc4d0b9 100644 --- a/drivers/leds/trigger/ledtrig-activity.c +++ b/drivers/leds/trigger/ledtrig-activity.c @@ -37,7 +37,6 @@ static void led_activity_function(struct timer_list *t) struct activity_data *activity_data = from_timer(activity_data, t, timer); struct led_classdev *led_cdev = activity_data->led_cdev; - struct timespec boot_time; unsigned int target; unsigned int usage; int delay; @@ -57,7 +56,7 @@ static void led_activity_function(struct timer_list *t) return; } - get_monotonic_boottime(&boot_time); + curr_boot = ktime_get_boot_ns(); cpus = 0; curr_used = 0; @@ -76,7 +75,6 @@ static void led_activity_function(struct timer_list *t) * down to 16us, ensuring we won't overflow 32-bit computations below * even up to 3k CPUs, while keeping divides cheap on smaller systems. */ - curr_boot = timespec_to_ns(&boot_time) * cpus; diff_boot = (curr_boot - activity_data->last_boot) >> 16; diff_used = (curr_used - activity_data->last_used) >> 16; activity_data->last_boot = curr_boot;
get_monotonic_boottime() is deprecated, so let's convert this to the simpler ktime_get_boot_ns(). Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/leds/trigger/ledtrig-activity.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- 2.9.0