kernel_samsung_a53x/kernel/time
Sultan Alsawaf 3af8699aee timekeeping: Keep the tick alive when CPUs cycle out of s2idle
When some CPUs cycle out of s2idle due to non-wakeup IRQs, it's possible
for them to run while the CPU responsible for jiffies updates remains idle.
This can delay the execution of timers indefinitely until the CPU managing
the jiffies updates finally wakes up, by which point everything could be
dead if enough time passes.

Fix it by handing off timekeeping duties when the timekeeping CPU enters
s2idle and freezes its tick. When all CPUs are in s2idle, the first one to
wake up for any reason (either from a wakeup IRQ or non-wakeup IRQ) will
assume responsibility for the timekeeping tick.

Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Signed-off-by: Panchajanya1999 <kernel@panchajanya.dev>
(cherry picked from commit 717100653a78c63fe56b95721fffee5fad96ee91)
(cherry picked from commit 83196f829f9e2d4aef6a4d30ac449a7bfc985208)
(cherry picked from commit ab251b18b95c2fe80f457dabdf2e7132a6b0ea27)
(cherry picked from commit e58369f386e19f02bc5db1a155040e54dd201a60)
2024-12-17 20:32:12 +01:00
..
alarmtimer.c alarmtimer: Minimize wakeup time 2024-11-19 18:05:33 +01:00
clockevents.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clocksource.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hrtimer.c hrtimer: Prevent queuing of hrtimer without a function callback 2024-11-23 23:20:47 +01:00
itimer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jiffies.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
namespace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ntp.c ntp: Safeguard against time_constant overflow 2024-11-23 23:20:28 +01:00
ntp_internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-clock.c posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime() 2024-11-23 23:22:01 +01:00
posix-cpu-timers.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-stubs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-timers.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-timers.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sched_clock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
test_udelay.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-broadcast-hrtimer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-broadcast.c tick/broadcast: Move per CPU pointer access into the atomic section 2024-11-23 23:20:28 +01:00
tick-common.c timekeeping: Keep the tick alive when CPUs cycle out of s2idle 2024-12-17 20:32:12 +01:00
tick-internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-oneshot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-sched.c tick/sched: Preserve number of idle sleeps across CPU hotplug events 2024-11-18 12:13:07 +01:00
tick-sched.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
time.c time: Fix references to _msecs_to_jiffies() handling of values 2024-12-17 13:24:00 +01:00
timeconst.bc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timeconv.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timecounter.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping.c timekeeping: Fix cross-timestamp interpolation for non-x86 2024-11-19 08:44:37 +01:00
timekeeping.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping_debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping_internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timer.c timers: Rename del_timer_sync() to timer_delete_sync() 2024-11-19 09:22:14 +01:00
timer_list.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vsyscall.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00