Paul E. McKenney
aaf2bc50df
rcu: Abstract out rcu_irq_enter_check_tick() from rcu_nmi_enter()
...
There will likely be exception handlers that can sleep, which rules
out the usual approach of invoking rcu_nmi_enter() on entry and also
rcu_nmi_exit() on all exit paths. However, the alternative approach of
just not calling anything can prevent RCU from coaxing quiescent states
from nohz_full CPUs that are looping in the kernel: RCU must instead
IPI them explicitly. It would be better to enable the scheduler tick
on such CPUs to interact with RCU in a lighter-weight manner, and this
enabling is one of the things that rcu_nmi_enter() currently does.
What is needed is something that helps RCU coax quiescent states while
not preventing subsequent sleeps. This commit therefore splits out the
nohz_full scheduler-tick enabling from the rest of the rcu_nmi_enter()
logic into a new function named rcu_irq_enter_check_tick().
[ tglx: Renamed the function and made it a nop when context tracking is off ]
[ mingo: Fixed a CONFIG_NO_HZ_FULL assumption, harmonized and fixed all the
comment blocks and cleaned up rcu_nmi_enter()/exit() definitions. ]
Suggested-by: Andy Lutomirski <luto@kernel.org >
Signed-off-by: Paul E. McKenney <paulmck@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Link: https://lore.kernel.org/r/20200521202116.996113173@linutronix.de
2020-05-26 19:04:18 +02:00
..
2020-04-28 17:44:34 +02:00
2020-04-18 15:44:54 -05:00
2020-03-30 12:42:42 +02:00
2020-04-03 15:05:35 -07:00
2020-04-01 14:47:40 -07:00
2020-03-31 21:29:04 +02:00
2020-04-20 14:07:00 +02:00
2020-04-16 10:28:12 +01:00
2020-04-08 21:29:10 -07:00
2020-04-01 18:18:18 -07:00
2020-03-30 10:14:19 +02:00
2020-03-31 22:08:54 +02:00
2020-05-06 16:40:14 -07:00
2020-04-10 15:36:22 -07:00
2020-03-30 11:45:18 -07:00
2020-04-18 15:44:56 -05:00
2020-04-03 15:05:35 -07:00
2020-04-07 19:44:52 -07:00
2020-05-02 11:24:01 -07:00
2020-04-02 15:50:04 -07:00
2020-04-08 21:03:40 -07:00
2020-03-28 13:19:05 -05:00
2020-03-31 10:05:01 -07:00
2020-05-09 16:07:57 -06:00
2020-05-07 08:45:47 -06:00
2020-04-18 15:44:54 -05:00
2020-04-07 10:43:42 -07:00
2020-04-07 10:43:43 -07:00
2020-04-18 15:44:54 -05:00
2020-04-01 14:56:44 -06:00
2020-04-18 15:44:54 -05:00
2020-03-30 11:43:51 -07:00
2020-03-30 01:34:00 +02:00
2020-03-30 01:34:00 +02:00
2020-03-30 14:59:53 -07:00
2020-03-30 17:36:33 -07:00
2020-03-30 19:52:37 -07:00
2020-03-27 16:07:24 -07:00
2020-04-15 23:58:48 -04:00
2020-04-03 11:30:20 -07:00
2020-04-10 15:36:21 -07:00
2020-03-31 11:04:05 -07:00
2020-05-19 15:47:20 +02:00
2020-05-19 15:47:20 +02:00
2020-04-18 15:44:55 -05:00
2020-03-28 11:42:55 +01:00
2020-04-03 11:32:13 -04:00
2020-04-02 19:15:03 -07:00
2020-04-17 17:08:50 +02:00
2020-04-07 10:45:15 +02:00
2020-04-02 19:15:03 -07:00
2020-04-08 11:00:00 -07:00
2020-04-18 15:44:54 -05:00
2020-04-18 15:44:54 -05:00
2020-04-30 19:47:39 +05:30
2020-04-27 21:26:23 +05:30
2020-03-31 11:04:05 -07:00
2020-04-18 15:44:54 -05:00
2020-04-18 15:44:54 -05:00
2020-04-18 15:44:54 -05:00
2020-05-04 09:16:37 -07:00
2020-05-19 15:51:18 +02:00
2020-04-18 15:44:54 -05:00
2020-03-30 11:20:13 -07:00
2020-04-07 10:43:38 -07:00
2020-05-26 19:04:18 +02:00
2020-03-27 20:19:24 -03:00
2020-04-07 10:43:39 -07:00
2020-04-02 09:35:32 -07:00
2020-04-10 15:36:21 -07:00
2020-04-15 11:48:21 +02:00
2020-03-29 21:25:29 -07:00
2020-04-18 15:44:55 -05:00
2020-04-18 15:44:55 -05:00
2020-03-29 22:30:57 -07:00
2020-04-19 11:23:33 -07:00
2020-04-01 13:20:14 +02:00
2020-04-02 09:35:30 -07:00
2020-03-29 12:40:41 +01:00
2020-04-02 09:35:25 -07:00
2020-03-30 18:51:47 -07:00
2020-04-14 10:39:56 -04:00
2020-04-06 22:55:27 +02:00
2020-03-31 17:29:33 -07:00
2020-04-18 15:44:55 -05:00
2020-05-19 15:51:18 +02:00
2020-04-30 20:29:34 -07:00
2020-03-31 17:29:33 -07:00
2020-04-10 15:36:21 -07:00
2020-04-18 15:44:55 -05:00
2020-04-10 15:36:21 -07:00
2020-04-07 10:43:40 -07:00
2020-04-02 09:35:31 -07:00
2020-04-08 21:03:40 -07:00
2020-05-05 16:58:36 +02:00
2020-04-07 10:43:38 -07:00
2020-04-07 10:43:41 -07:00
2020-04-10 15:36:21 -07:00
2020-04-08 21:03:40 -07:00
2020-04-03 13:22:40 -07:00
2020-03-30 19:52:37 -07:00
2020-04-06 13:56:33 -04:00
2020-04-01 13:37:57 -04:00
2020-04-28 15:58:38 -04:00
2020-04-04 09:09:39 +02:00
2020-04-02 09:35:27 -07:00
2020-04-07 10:43:39 -07:00
2020-04-07 10:43:38 -07:00
2020-04-07 10:43:38 -07:00
2020-04-03 14:25:02 -07:00
2020-03-28 13:19:04 -05:00
2020-04-02 17:57:10 +01:00
2020-04-02 17:57:10 +01:00
2020-04-03 14:25:02 -07:00
2020-04-07 10:43:43 -07:00
2020-03-30 11:52:27 -07:00
2020-04-09 12:15:35 -05:00
2020-04-28 17:44:33 +02:00
2020-04-22 11:36:11 +02:00
2020-04-18 15:44:55 -05:00
2020-05-19 15:51:17 +02:00
2020-04-10 13:18:57 -07:00
2020-04-07 10:43:42 -07:00
2020-04-02 11:22:17 -07:00
2020-03-30 11:16:38 -07:00
2020-03-30 16:55:26 +02:00
2020-04-27 11:01:16 -07:00
2020-04-27 11:03:52 -07:00
2020-04-27 11:03:51 -07:00
2020-04-27 11:03:52 -07:00
2020-05-19 15:51:21 +02:00
2020-05-19 15:51:21 +02:00
2020-04-08 12:05:07 +02:00
2020-04-18 15:44:56 -05:00
2020-04-18 15:44:56 -05:00
2020-04-02 18:47:30 +02:00
2020-05-19 15:51:19 +02:00
2020-03-31 15:49:51 -07:00
2020-04-07 10:43:42 -07:00
2020-04-07 10:43:38 -07:00
2020-04-18 15:44:56 -05:00
2020-04-10 15:36:20 -07:00
2020-03-30 12:18:49 -07:00
2020-04-07 10:43:43 -07:00
2020-04-21 15:54:45 -07:00
2020-04-18 15:44:56 -05:00
2020-04-07 10:43:41 -07:00
2020-04-05 11:34:35 -07:00
2020-04-30 12:23:22 -07:00
2020-04-18 15:44:56 -05:00
2020-03-30 18:51:47 -07:00
2020-03-30 14:59:53 -07:00
2020-04-02 09:35:26 -07:00
2020-04-27 11:05:13 -07:00
2020-04-18 15:44:56 -05:00
2020-04-22 22:06:35 -04:00
2020-05-04 09:16:37 -07:00
2020-04-07 10:43:39 -07:00
2020-04-17 06:05:30 -04:00
2020-04-23 10:50:26 +09:00
2020-04-01 12:06:26 -04:00
2020-05-06 17:23:06 -07:00
2020-04-27 10:18:01 -07:00
2020-04-17 06:05:30 -04:00
2020-04-07 10:43:38 -07:00
2020-04-21 11:11:56 -07:00
2020-04-16 18:31:08 -04:00
2020-04-27 11:03:50 -07:00
2020-04-03 12:27:36 -07:00
2020-04-18 15:44:56 -05:00