summaryrefslogtreecommitdiff
path: root/arch/parisc/kernel/time.c
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2022-03-27 15:03:53 +0200
committerHelge Deller <deller@gmx.de>2022-03-29 21:37:13 +0200
commit1afde47d082c92c4fd3d9b322d944f8d87469834 (patch)
tree8e7cd0280a22b7dfdc7e1af3691106e9172109f9 /arch/parisc/kernel/time.c
parentca45ec3cb44aabe0933f9e10dba1b6946afb2a13 (diff)
downloadlinux-1afde47d082c92c4fd3d9b322d944f8d87469834.tar.gz
linux-1afde47d082c92c4fd3d9b322d944f8d87469834.tar.bz2
linux-1afde47d082c92c4fd3d9b322d944f8d87469834.zip
parisc: Find a new timesync master if current CPU is removed
When CPU hotplugging is enabled, the user may want to remove the current CPU which is providing the timer ticks. If this happens we need to find a new timesync master. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/kernel/time.c')
-rw-r--r--arch/parisc/kernel/time.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 874b128c5783..bb27dfeeddfc 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -40,6 +40,8 @@
#include <linux/timex.h>
+int time_keeper_id __read_mostly; /* CPU used for timekeeping. */
+
static unsigned long clocktick __ro_after_init; /* timer cycles per tick */
/*
@@ -84,7 +86,7 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
cpuinfo->it_value = next_tick;
/* Go do system house keeping. */
- if (cpu != 0)
+ if (IS_ENABLED(CONFIG_SMP) && (cpu != time_keeper_id))
ticks_elapsed = 0;
legacy_timer_tick(ticks_elapsed);