All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] time/sched_clock: Disable interrupts in sched_clock_register
@ 2020-01-07  1:06 Paul Cercueil
  2020-01-07  1:06 ` [PATCH v2 2/2] clocksource: Add driver for the Ingenic JZ47xx OST Paul Cercueil
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Paul Cercueil @ 2020-01-07  1:06 UTC (permalink / raw)
  To: Daniel Lezcano, Thomas Gleixner; +Cc: od, linux-kernel, Paul Cercueil

Instead of issueing a warning if sched_clock_register is called from a
context where IRQs are enabled, the code now ensures that IRQs are
indeed disabled.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: New patch

 kernel/time/sched_clock.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index dbd69052eaa6..e4332e3e2d56 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -169,14 +169,15 @@ sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
 {
 	u64 res, wrap, new_mask, new_epoch, cyc, ns;
 	u32 new_mult, new_shift;
-	unsigned long r;
+	unsigned long r, flags;
 	char r_unit;
 	struct clock_read_data rd;
 
 	if (cd.rate > rate)
 		return;
 
-	WARN_ON(!irqs_disabled());
+	/* Cannot register a sched_clock with interrupts on */
+	local_irq_save(flags);
 
 	/* Calculate the mult/shift to convert counter ticks to ns. */
 	clocks_calc_mult_shift(&new_mult, &new_shift, rate, NSEC_PER_SEC, 3600);
@@ -233,6 +234,8 @@ sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
 	if (irqtime > 0 || (irqtime == -1 && rate >= 1000000))
 		enable_sched_clock_irqtime();
 
+	local_irq_restore(flags);
+
 	pr_debug("Registered %pS as sched_clock source\n", read);
 }
 
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-01-09 18:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-07  1:06 [PATCH v2 1/2] time/sched_clock: Disable interrupts in sched_clock_register Paul Cercueil
2020-01-07  1:06 ` [PATCH v2 2/2] clocksource: Add driver for the Ingenic JZ47xx OST Paul Cercueil
2020-01-09 14:28   ` Thomas Gleixner
2020-01-09 18:26     ` Paul Cercueil
2020-01-09 11:55 ` [PATCH v2 1/2] time/sched_clock: Disable interrupts in sched_clock_register Daniel Lezcano
2020-01-09 17:33 ` [tip: timers/core] time/sched_clock: Disable interrupts in sched_clock_register() tip-bot2 for Paul Cercueil
2020-01-09 17:56 ` tip-bot2 for Paul Cercueil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.