Merge branches 'doc.2021.01.06a', 'fixes.2021.01.04b', 'kfree_rcu.2021.01.04a', ...
[sfrench/cifs-2.6.git] / Documentation / RCU / stallwarn.rst
index c9ab6af4d3be9a00f4e57c956c6c109a989961c7..7148e9be08c34a4148808c8b742225be63a94115 100644 (file)
@@ -25,7 +25,7 @@ warnings:
 
 -      A CPU looping with bottom halves disabled.
 
--      For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel
+-      For !CONFIG_PREEMPTION kernels, a CPU looping anywhere in the kernel
        without invoking schedule().  If the looping in the kernel is
        really expected and desirable behavior, you might need to add
        some calls to cond_resched().
@@ -44,7 +44,7 @@ warnings:
        result in the ``rcu_.*kthread starved for`` console-log message,
        which will include additional debugging information.
 
--      A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
+-      A CPU-bound real-time task in a CONFIG_PREEMPTION kernel, which might
        happen to preempt a low-priority task in the middle of an RCU
        read-side critical section.   This is especially damaging if
        that low-priority task is not permitted to run on any other CPU,
@@ -92,7 +92,9 @@ warnings:
        buggy timer hardware through bugs in the interrupt or exception
        path (whether hardware, firmware, or software) through bugs
        in Linux's timer subsystem through bugs in the scheduler, and,
-       yes, even including bugs in RCU itself.
+       yes, even including bugs in RCU itself.  It can also result in
+       the ``rcu_.*timer wakeup didn't happen for`` console-log message,
+       which will include additional debugging information.
 
 -      A bug in the RCU implementation.
 
@@ -292,6 +294,25 @@ kthread is waiting for a short timeout, the "state" precedes value of the
 task_struct ->state field, and the "cpu" indicates that the grace-period
 kthread last ran on CPU 5.
 
+If the relevant grace-period kthread does not wake from FQS wait in a
+reasonable time, then the following additional line is printed::
+
+       kthread timer wakeup didn't happen for 23804 jiffies! g7076 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402
+
+The "23804" indicates that kthread's timer expired more than 23 thousand
+jiffies ago.  The rest of the line has meaning similar to the kthread
+starvation case.
+
+Additionally, the following line is printed::
+
+       Possible timer handling issue on cpu=4 timer-softirq=11142
+
+Here "cpu" indicates that the grace-period kthread last ran on CPU 4,
+where it queued the fqs timer.  The number following the "timer-softirq"
+is the current ``TIMER_SOFTIRQ`` count on cpu 4.  If this value does not
+change on successive RCU CPU stall warnings, there is further reason to
+suspect a timer problem.
+
 
 Multiple Warnings From One Stall
 ================================