diff mbox series

leds: ledtrig-activity: use ktime_get_boot_ns()

Message ID 20180618144210.72367-1-arnd@arndb.de
State New
Headers show
Series leds: ledtrig-activity: use ktime_get_boot_ns() | expand

Commit Message

Arnd Bergmann June 18, 2018, 2:41 p.m. UTC
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

Comments

Arnd Bergmann June 18, 2018, 3:47 p.m. UTC | #1
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
Pavel Machek June 18, 2018, 3:55 p.m. UTC | #2
> >> 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
Willy Tarreau June 18, 2018, 6:29 p.m. UTC | #3
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 mbox series

Patch

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;