stallwarn.rst (dd84cfff3cc3b79c9d616f85bd1178df135cbd1a) | stallwarn.rst (e67198cc05b8ecbb7b8e2d8ef9fb5c8d26821873) |
---|---|
1.. SPDX-License-Identifier: GPL-2.0 2 3============================== 4Using RCU's CPU Stall Detector 5============================== 6 7This document first discusses what sorts of issues RCU's CPU stall 8detector can locate, and then discusses kernel parameters and Kconfig --- 83 unchanged lines hidden (view full) --- 92 buggy timer hardware through bugs in the interrupt or exception 93 path (whether hardware, firmware, or software) through bugs 94 in Linux's timer subsystem through bugs in the scheduler, and, 95 yes, even including bugs in RCU itself. It can also result in 96 the ``rcu_.*timer wakeup didn't happen for`` console-log message, 97 which will include additional debugging information. 98 99- A low-level kernel issue that either fails to invoke one of the | 1.. SPDX-License-Identifier: GPL-2.0 2 3============================== 4Using RCU's CPU Stall Detector 5============================== 6 7This document first discusses what sorts of issues RCU's CPU stall 8detector can locate, and then discusses kernel parameters and Kconfig --- 83 unchanged lines hidden (view full) --- 92 buggy timer hardware through bugs in the interrupt or exception 93 path (whether hardware, firmware, or software) through bugs 94 in Linux's timer subsystem through bugs in the scheduler, and, 95 yes, even including bugs in RCU itself. It can also result in 96 the ``rcu_.*timer wakeup didn't happen for`` console-log message, 97 which will include additional debugging information. 98 99- A low-level kernel issue that either fails to invoke one of the |
100 variants of rcu_user_enter(), rcu_user_exit(), rcu_idle_enter(), 101 rcu_idle_exit(), rcu_irq_enter(), or rcu_irq_exit() on the one | 100 variants of rcu_user_enter(), rcu_user_exit(), ct_idle_enter(), 101 ct_idle_exit(), rcu_irq_enter(), or rcu_irq_exit() on the one |
102 hand, or that invokes one of them too many times on the other. 103 Historically, the most frequent issue has been an omission 104 of either irq_enter() or irq_exit(), which in turn invoke 105 rcu_irq_enter() or rcu_irq_exit(), respectively. Building your 106 kernel with CONFIG_RCU_EQS_DEBUG=y can help track down these types 107 of issues, which sometimes arise in architecture-specific code. 108 109- A bug in the RCU implementation. --- 276 unchanged lines hidden --- | 102 hand, or that invokes one of them too many times on the other. 103 Historically, the most frequent issue has been an omission 104 of either irq_enter() or irq_exit(), which in turn invoke 105 rcu_irq_enter() or rcu_irq_exit(), respectively. Building your 106 kernel with CONFIG_RCU_EQS_DEBUG=y can help track down these types 107 of issues, which sometimes arise in architecture-specific code. 108 109- A bug in the RCU implementation. --- 276 unchanged lines hidden --- |