Patch "power: ab8500_chargalg: Use CLOCK_MONOTONIC" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    power: ab8500_chargalg: Use CLOCK_MONOTONIC

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     power-ab8500_chargalg-use-clock_monotonic.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5dbb3061260070707b2e95b7dcd14253a635185f
Author: Linus Walleij <linus.walleij@xxxxxxxxxx>
Date:   Tue Mar 8 16:44:25 2022 +0100

    power: ab8500_chargalg: Use CLOCK_MONOTONIC
    
    [ Upstream commit c22fca40522e2be8af168f3087d87d85e404ea72 ]
    
    The HRTimer in the AB8500 charging code is using CLOCK_REALTIME
    to set an alarm some hours forward in time +/- 5 min for a safety
    timer.
    
    I have observed that this will sometimes fire sporadically
    early when charging a battery with the result that
    charging stops.
    
    As CLOCK_REALTIME can be subject to adjustments of time from
    sources such as NTP, this cannot be trusted and will likely
    for example fire events if the clock is set forward some hours
    by say NTP.
    
    Use CLOCK_MONOTONIC as indicated in other instances and the
    problem goes away. Also initialize the timer to REL mode
    as this is what will be used later.
    
    Fixes: 257107ae6b9b ("ab8500-chargalg: Use hrtimer")
    Cc: Lee Jones <lee.jones@xxxxxxxxxx>
    Suggested-by: Matti Vaittinen <mazziesaccount@xxxxxxxxx>
    Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
    Reviewed-by: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/power/supply/ab8500_chargalg.c b/drivers/power/supply/ab8500_chargalg.c
index ff4b26b1ceca..b809fa5abbba 100644
--- a/drivers/power/supply/ab8500_chargalg.c
+++ b/drivers/power/supply/ab8500_chargalg.c
@@ -2019,11 +2019,11 @@ static int ab8500_chargalg_probe(struct platform_device *pdev)
 	psy_cfg.drv_data = di;
 
 	/* Initilialize safety timer */
-	hrtimer_init(&di->safety_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
+	hrtimer_init(&di->safety_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	di->safety_timer.function = ab8500_chargalg_safety_timer_expired;
 
 	/* Initilialize maintenance timer */
-	hrtimer_init(&di->maintenance_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
+	hrtimer_init(&di->maintenance_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	di->maintenance_timer.function =
 		ab8500_chargalg_maintenance_timer_expired;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux