1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun============================== 4*4882a593SmuzhiyunUsing RCU's CPU Stall Detector 5*4882a593Smuzhiyun============================== 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunThis document first discusses what sorts of issues RCU's CPU stall 8*4882a593Smuzhiyundetector can locate, and then discusses kernel parameters and Kconfig 9*4882a593Smuzhiyunoptions that can be used to fine-tune the detector's operation. Finally, 10*4882a593Smuzhiyunthis document explains the stall detector's "splat" format. 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunWhat Causes RCU CPU Stall Warnings? 14*4882a593Smuzhiyun=================================== 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunSo your kernel printed an RCU CPU stall warning. The next question is 17*4882a593Smuzhiyun"What caused it?" The following problems can result in RCU CPU stall 18*4882a593Smuzhiyunwarnings: 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun- A CPU looping in an RCU read-side critical section. 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun- A CPU looping with interrupts disabled. 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun- A CPU looping with preemption disabled. 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun- A CPU looping with bottom halves disabled. 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun- For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel 29*4882a593Smuzhiyun without invoking schedule(). If the looping in the kernel is 30*4882a593Smuzhiyun really expected and desirable behavior, you might need to add 31*4882a593Smuzhiyun some calls to cond_resched(). 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun- Booting Linux using a console connection that is too slow to 34*4882a593Smuzhiyun keep up with the boot-time console-message rate. For example, 35*4882a593Smuzhiyun a 115Kbaud serial console can be -way- too slow to keep up 36*4882a593Smuzhiyun with boot-time message rates, and will frequently result in 37*4882a593Smuzhiyun RCU CPU stall warning messages. Especially if you have added 38*4882a593Smuzhiyun debug printk()s. 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun- Anything that prevents RCU's grace-period kthreads from running. 41*4882a593Smuzhiyun This can result in the "All QSes seen" console-log message. 42*4882a593Smuzhiyun This message will include information on when the kthread last 43*4882a593Smuzhiyun ran and how often it should be expected to run. It can also 44*4882a593Smuzhiyun result in the ``rcu_.*kthread starved for`` console-log message, 45*4882a593Smuzhiyun which will include additional debugging information. 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun- A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might 48*4882a593Smuzhiyun happen to preempt a low-priority task in the middle of an RCU 49*4882a593Smuzhiyun read-side critical section. This is especially damaging if 50*4882a593Smuzhiyun that low-priority task is not permitted to run on any other CPU, 51*4882a593Smuzhiyun in which case the next RCU grace period can never complete, which 52*4882a593Smuzhiyun will eventually cause the system to run out of memory and hang. 53*4882a593Smuzhiyun While the system is in the process of running itself out of 54*4882a593Smuzhiyun memory, you might see stall-warning messages. 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun- A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that 57*4882a593Smuzhiyun is running at a higher priority than the RCU softirq threads. 58*4882a593Smuzhiyun This will prevent RCU callbacks from ever being invoked, 59*4882a593Smuzhiyun and in a CONFIG_PREEMPT_RCU kernel will further prevent 60*4882a593Smuzhiyun RCU grace periods from ever completing. Either way, the 61*4882a593Smuzhiyun system will eventually run out of memory and hang. In the 62*4882a593Smuzhiyun CONFIG_PREEMPT_RCU case, you might see stall-warning 63*4882a593Smuzhiyun messages. 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun You can use the rcutree.kthread_prio kernel boot parameter to 66*4882a593Smuzhiyun increase the scheduling priority of RCU's kthreads, which can 67*4882a593Smuzhiyun help avoid this problem. However, please note that doing this 68*4882a593Smuzhiyun can increase your system's context-switch rate and thus degrade 69*4882a593Smuzhiyun performance. 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun- A periodic interrupt whose handler takes longer than the time 72*4882a593Smuzhiyun interval between successive pairs of interrupts. This can 73*4882a593Smuzhiyun prevent RCU's kthreads and softirq handlers from running. 74*4882a593Smuzhiyun Note that certain high-overhead debugging options, for example 75*4882a593Smuzhiyun the function_graph tracer, can result in interrupt handler taking 76*4882a593Smuzhiyun considerably longer than normal, which can in turn result in 77*4882a593Smuzhiyun RCU CPU stall warnings. 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun- Testing a workload on a fast system, tuning the stall-warning 80*4882a593Smuzhiyun timeout down to just barely avoid RCU CPU stall warnings, and then 81*4882a593Smuzhiyun running the same workload with the same stall-warning timeout on a 82*4882a593Smuzhiyun slow system. Note that thermal throttling and on-demand governors 83*4882a593Smuzhiyun can cause a single system to be sometimes fast and sometimes slow! 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun- A hardware or software issue shuts off the scheduler-clock 86*4882a593Smuzhiyun interrupt on a CPU that is not in dyntick-idle mode. This 87*4882a593Smuzhiyun problem really has happened, and seems to be most likely to 88*4882a593Smuzhiyun result in RCU CPU stall warnings for CONFIG_NO_HZ_COMMON=n kernels. 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun- A hardware or software issue that prevents time-based wakeups 91*4882a593Smuzhiyun from occurring. These issues can range from misconfigured or 92*4882a593Smuzhiyun buggy timer hardware through bugs in the interrupt or exception 93*4882a593Smuzhiyun path (whether hardware, firmware, or software) through bugs 94*4882a593Smuzhiyun in Linux's timer subsystem through bugs in the scheduler, and, 95*4882a593Smuzhiyun yes, even including bugs in RCU itself. 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun- A bug in the RCU implementation. 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun- A hardware failure. This is quite unlikely, but has occurred 100*4882a593Smuzhiyun at least once in real life. A CPU failed in a running system, 101*4882a593Smuzhiyun becoming unresponsive, but not causing an immediate crash. 102*4882a593Smuzhiyun This resulted in a series of RCU CPU stall warnings, eventually 103*4882a593Smuzhiyun leading the realization that the CPU had failed. 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunThe RCU, RCU-sched, and RCU-tasks implementations have CPU stall warning. 106*4882a593SmuzhiyunNote that SRCU does -not- have CPU stall warnings. Please note that 107*4882a593SmuzhiyunRCU only detects CPU stalls when there is a grace period in progress. 108*4882a593SmuzhiyunNo grace period, no CPU stall warnings. 109*4882a593Smuzhiyun 110*4882a593SmuzhiyunTo diagnose the cause of the stall, inspect the stack traces. 111*4882a593SmuzhiyunThe offending function will usually be near the top of the stack. 112*4882a593SmuzhiyunIf you have a series of stall warnings from a single extended stall, 113*4882a593Smuzhiyuncomparing the stack traces can often help determine where the stall 114*4882a593Smuzhiyunis occurring, which will usually be in the function nearest the top of 115*4882a593Smuzhiyunthat portion of the stack which remains the same from trace to trace. 116*4882a593SmuzhiyunIf you can reliably trigger the stall, ftrace can be quite helpful. 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunRCU bugs can often be debugged with the help of CONFIG_RCU_TRACE 119*4882a593Smuzhiyunand with RCU's event tracing. For information on RCU's event tracing, 120*4882a593Smuzhiyunsee include/trace/events/rcu.h. 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun 123*4882a593SmuzhiyunFine-Tuning the RCU CPU Stall Detector 124*4882a593Smuzhiyun====================================== 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunThe rcuupdate.rcu_cpu_stall_suppress module parameter disables RCU's 127*4882a593SmuzhiyunCPU stall detector, which detects conditions that unduly delay RCU grace 128*4882a593Smuzhiyunperiods. This module parameter enables CPU stall detection by default, 129*4882a593Smuzhiyunbut may be overridden via boot-time parameter or at runtime via sysfs. 130*4882a593SmuzhiyunThe stall detector's idea of what constitutes "unduly delayed" is 131*4882a593Smuzhiyuncontrolled by a set of kernel configuration variables and cpp macros: 132*4882a593Smuzhiyun 133*4882a593SmuzhiyunCONFIG_RCU_CPU_STALL_TIMEOUT 134*4882a593Smuzhiyun---------------------------- 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun This kernel configuration parameter defines the period of time 137*4882a593Smuzhiyun that RCU will wait from the beginning of a grace period until it 138*4882a593Smuzhiyun issues an RCU CPU stall warning. This time period is normally 139*4882a593Smuzhiyun 21 seconds. 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun This configuration parameter may be changed at runtime via the 142*4882a593Smuzhiyun /sys/module/rcupdate/parameters/rcu_cpu_stall_timeout, however 143*4882a593Smuzhiyun this parameter is checked only at the beginning of a cycle. 144*4882a593Smuzhiyun So if you are 10 seconds into a 40-second stall, setting this 145*4882a593Smuzhiyun sysfs parameter to (say) five will shorten the timeout for the 146*4882a593Smuzhiyun -next- stall, or the following warning for the current stall 147*4882a593Smuzhiyun (assuming the stall lasts long enough). It will not affect the 148*4882a593Smuzhiyun timing of the next warning for the current stall. 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun Stall-warning messages may be enabled and disabled completely via 151*4882a593Smuzhiyun /sys/module/rcupdate/parameters/rcu_cpu_stall_suppress. 152*4882a593Smuzhiyun 153*4882a593SmuzhiyunRCU_STALL_DELAY_DELTA 154*4882a593Smuzhiyun--------------------- 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun Although the lockdep facility is extremely useful, it does add 157*4882a593Smuzhiyun some overhead. Therefore, under CONFIG_PROVE_RCU, the 158*4882a593Smuzhiyun RCU_STALL_DELAY_DELTA macro allows five extra seconds before 159*4882a593Smuzhiyun giving an RCU CPU stall warning message. (This is a cpp 160*4882a593Smuzhiyun macro, not a kernel configuration parameter.) 161*4882a593Smuzhiyun 162*4882a593SmuzhiyunRCU_STALL_RAT_DELAY 163*4882a593Smuzhiyun------------------- 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun The CPU stall detector tries to make the offending CPU print its 166*4882a593Smuzhiyun own warnings, as this often gives better-quality stack traces. 167*4882a593Smuzhiyun However, if the offending CPU does not detect its own stall in 168*4882a593Smuzhiyun the number of jiffies specified by RCU_STALL_RAT_DELAY, then 169*4882a593Smuzhiyun some other CPU will complain. This delay is normally set to 170*4882a593Smuzhiyun two jiffies. (This is a cpp macro, not a kernel configuration 171*4882a593Smuzhiyun parameter.) 172*4882a593Smuzhiyun 173*4882a593Smuzhiyunrcupdate.rcu_task_stall_timeout 174*4882a593Smuzhiyun------------------------------- 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun This boot/sysfs parameter controls the RCU-tasks stall warning 177*4882a593Smuzhiyun interval. A value of zero or less suppresses RCU-tasks stall 178*4882a593Smuzhiyun warnings. A positive value sets the stall-warning interval 179*4882a593Smuzhiyun in seconds. An RCU-tasks stall warning starts with the line: 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun INFO: rcu_tasks detected stalls on tasks: 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun And continues with the output of sched_show_task() for each 184*4882a593Smuzhiyun task stalling the current RCU-tasks grace period. 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun 187*4882a593SmuzhiyunInterpreting RCU's CPU Stall-Detector "Splats" 188*4882a593Smuzhiyun============================================== 189*4882a593Smuzhiyun 190*4882a593SmuzhiyunFor non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling, 191*4882a593Smuzhiyunit will print a message similar to the following:: 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun INFO: rcu_sched detected stalls on CPUs/tasks: 194*4882a593Smuzhiyun 2-...: (3 GPs behind) idle=06c/0/0 softirq=1453/1455 fqs=0 195*4882a593Smuzhiyun 16-...: (0 ticks this GP) idle=81c/0/0 softirq=764/764 fqs=0 196*4882a593Smuzhiyun (detected by 32, t=2603 jiffies, g=7075, q=625) 197*4882a593Smuzhiyun 198*4882a593SmuzhiyunThis message indicates that CPU 32 detected that CPUs 2 and 16 were both 199*4882a593Smuzhiyuncausing stalls, and that the stall was affecting RCU-sched. This message 200*4882a593Smuzhiyunwill normally be followed by stack dumps for each CPU. Please note that 201*4882a593SmuzhiyunPREEMPT_RCU builds can be stalled by tasks as well as by CPUs, and that 202*4882a593Smuzhiyunthe tasks will be indicated by PID, for example, "P3421". It is even 203*4882a593Smuzhiyunpossible for an rcu_state stall to be caused by both CPUs -and- tasks, 204*4882a593Smuzhiyunin which case the offending CPUs and tasks will all be called out in the list. 205*4882a593Smuzhiyun 206*4882a593SmuzhiyunCPU 2's "(3 GPs behind)" indicates that this CPU has not interacted with 207*4882a593Smuzhiyunthe RCU core for the past three grace periods. In contrast, CPU 16's "(0 208*4882a593Smuzhiyunticks this GP)" indicates that this CPU has not taken any scheduling-clock 209*4882a593Smuzhiyuninterrupts during the current stalled grace period. 210*4882a593Smuzhiyun 211*4882a593SmuzhiyunThe "idle=" portion of the message prints the dyntick-idle state. 212*4882a593SmuzhiyunThe hex number before the first "/" is the low-order 12 bits of the 213*4882a593Smuzhiyundynticks counter, which will have an even-numbered value if the CPU 214*4882a593Smuzhiyunis in dyntick-idle mode and an odd-numbered value otherwise. The hex 215*4882a593Smuzhiyunnumber between the two "/"s is the value of the nesting, which will be 216*4882a593Smuzhiyuna small non-negative number if in the idle loop (as shown above) and a 217*4882a593Smuzhiyunvery large positive number otherwise. 218*4882a593Smuzhiyun 219*4882a593SmuzhiyunThe "softirq=" portion of the message tracks the number of RCU softirq 220*4882a593Smuzhiyunhandlers that the stalled CPU has executed. The number before the "/" 221*4882a593Smuzhiyunis the number that had executed since boot at the time that this CPU 222*4882a593Smuzhiyunlast noted the beginning of a grace period, which might be the current 223*4882a593Smuzhiyun(stalled) grace period, or it might be some earlier grace period (for 224*4882a593Smuzhiyunexample, if the CPU might have been in dyntick-idle mode for an extended 225*4882a593Smuzhiyuntime period. The number after the "/" is the number that have executed 226*4882a593Smuzhiyunsince boot until the current time. If this latter number stays constant 227*4882a593Smuzhiyunacross repeated stall-warning messages, it is possible that RCU's softirq 228*4882a593Smuzhiyunhandlers are no longer able to execute on this CPU. This can happen if 229*4882a593Smuzhiyunthe stalled CPU is spinning with interrupts are disabled, or, in -rt 230*4882a593Smuzhiyunkernels, if a high-priority process is starving RCU's softirq handler. 231*4882a593Smuzhiyun 232*4882a593SmuzhiyunThe "fqs=" shows the number of force-quiescent-state idle/offline 233*4882a593Smuzhiyundetection passes that the grace-period kthread has made across this 234*4882a593SmuzhiyunCPU since the last time that this CPU noted the beginning of a grace 235*4882a593Smuzhiyunperiod. 236*4882a593Smuzhiyun 237*4882a593SmuzhiyunThe "detected by" line indicates which CPU detected the stall (in this 238*4882a593Smuzhiyuncase, CPU 32), how many jiffies have elapsed since the start of the grace 239*4882a593Smuzhiyunperiod (in this case 2603), the grace-period sequence number (7075), and 240*4882a593Smuzhiyunan estimate of the total number of RCU callbacks queued across all CPUs 241*4882a593Smuzhiyun(625 in this case). 242*4882a593Smuzhiyun 243*4882a593SmuzhiyunIn kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed 244*4882a593Smuzhiyunfor each CPU:: 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 dyntick_enabled: 1 247*4882a593Smuzhiyun 248*4882a593SmuzhiyunThe "last_accelerate:" prints the low-order 16 bits (in hex) of the 249*4882a593Smuzhiyunjiffies counter when this CPU last invoked rcu_try_advance_all_cbs() 250*4882a593Smuzhiyunfrom rcu_needs_cpu() or last invoked rcu_accelerate_cbs() from 251*4882a593Smuzhiyunrcu_prepare_for_idle(). "dyntick_enabled: 1" indicates that dyntick-idle 252*4882a593Smuzhiyunprocessing is enabled. 253*4882a593Smuzhiyun 254*4882a593SmuzhiyunIf the grace period ends just as the stall warning starts printing, 255*4882a593Smuzhiyunthere will be a spurious stall-warning message, which will include 256*4882a593Smuzhiyunthe following:: 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun INFO: Stall ended before state dump start 259*4882a593Smuzhiyun 260*4882a593SmuzhiyunThis is rare, but does happen from time to time in real life. It is also 261*4882a593Smuzhiyunpossible for a zero-jiffy stall to be flagged in this case, depending 262*4882a593Smuzhiyunon how the stall warning and the grace-period initialization happen to 263*4882a593Smuzhiyuninteract. Please note that it is not possible to entirely eliminate this 264*4882a593Smuzhiyunsort of false positive without resorting to things like stop_machine(), 265*4882a593Smuzhiyunwhich is overkill for this sort of problem. 266*4882a593Smuzhiyun 267*4882a593SmuzhiyunIf all CPUs and tasks have passed through quiescent states, but the 268*4882a593Smuzhiyungrace period has nevertheless failed to end, the stall-warning splat 269*4882a593Smuzhiyunwill include something like the following:: 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun All QSes seen, last rcu_preempt kthread activity 23807 (4297905177-4297881370), jiffies_till_next_fqs=3, root ->qsmask 0x0 272*4882a593Smuzhiyun 273*4882a593SmuzhiyunThe "23807" indicates that it has been more than 23 thousand jiffies 274*4882a593Smuzhiyunsince the grace-period kthread ran. The "jiffies_till_next_fqs" 275*4882a593Smuzhiyunindicates how frequently that kthread should run, giving the number 276*4882a593Smuzhiyunof jiffies between force-quiescent-state scans, in this case three, 277*4882a593Smuzhiyunwhich is way less than 23807. Finally, the root rcu_node structure's 278*4882a593Smuzhiyun->qsmask field is printed, which will normally be zero. 279*4882a593Smuzhiyun 280*4882a593SmuzhiyunIf the relevant grace-period kthread has been unable to run prior to 281*4882a593Smuzhiyunthe stall warning, as was the case in the "All QSes seen" line above, 282*4882a593Smuzhiyunthe following additional line is printed:: 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun kthread starved for 23807 jiffies! g7075 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1 ->cpu=5 285*4882a593Smuzhiyun 286*4882a593SmuzhiyunStarving the grace-period kthreads of CPU time can of course result 287*4882a593Smuzhiyunin RCU CPU stall warnings even when all CPUs and tasks have passed 288*4882a593Smuzhiyunthrough the required quiescent states. The "g" number shows the current 289*4882a593Smuzhiyungrace-period sequence number, the "f" precedes the ->gp_flags command 290*4882a593Smuzhiyunto the grace-period kthread, the "RCU_GP_WAIT_FQS" indicates that the 291*4882a593Smuzhiyunkthread is waiting for a short timeout, the "state" precedes value of the 292*4882a593Smuzhiyuntask_struct ->state field, and the "cpu" indicates that the grace-period 293*4882a593Smuzhiyunkthread last ran on CPU 5. 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun 296*4882a593SmuzhiyunMultiple Warnings From One Stall 297*4882a593Smuzhiyun================================ 298*4882a593Smuzhiyun 299*4882a593SmuzhiyunIf a stall lasts long enough, multiple stall-warning messages will be 300*4882a593Smuzhiyunprinted for it. The second and subsequent messages are printed at 301*4882a593Smuzhiyunlonger intervals, so that the time between (say) the first and second 302*4882a593Smuzhiyunmessage will be about three times the interval between the beginning 303*4882a593Smuzhiyunof the stall and the first message. 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun 306*4882a593SmuzhiyunStall Warnings for Expedited Grace Periods 307*4882a593Smuzhiyun========================================== 308*4882a593Smuzhiyun 309*4882a593SmuzhiyunIf an expedited grace period detects a stall, it will place a message 310*4882a593Smuzhiyunlike the following in dmesg:: 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 7-... } 21119 jiffies s: 73 root: 0x2/. 313*4882a593Smuzhiyun 314*4882a593SmuzhiyunThis indicates that CPU 7 has failed to respond to a reschedule IPI. 315*4882a593SmuzhiyunThe three periods (".") following the CPU number indicate that the CPU 316*4882a593Smuzhiyunis online (otherwise the first period would instead have been "O"), 317*4882a593Smuzhiyunthat the CPU was online at the beginning of the expedited grace period 318*4882a593Smuzhiyun(otherwise the second period would have instead been "o"), and that 319*4882a593Smuzhiyunthe CPU has been online at least once since boot (otherwise, the third 320*4882a593Smuzhiyunperiod would instead have been "N"). The number before the "jiffies" 321*4882a593Smuzhiyunindicates that the expedited grace period has been going on for 21,119 322*4882a593Smuzhiyunjiffies. The number following the "s:" indicates that the expedited 323*4882a593Smuzhiyungrace-period sequence counter is 73. The fact that this last value is 324*4882a593Smuzhiyunodd indicates that an expedited grace period is in flight. The number 325*4882a593Smuzhiyunfollowing "root:" is a bitmask that indicates which children of the root 326*4882a593Smuzhiyunrcu_node structure correspond to CPUs and/or tasks that are blocking the 327*4882a593Smuzhiyuncurrent expedited grace period. If the tree had more than one level, 328*4882a593Smuzhiyunadditional hex numbers would be printed for the states of the other 329*4882a593Smuzhiyunrcu_node structures in the tree. 330*4882a593Smuzhiyun 331*4882a593SmuzhiyunAs with normal grace periods, PREEMPT_RCU builds can be stalled by 332*4882a593Smuzhiyuntasks as well as by CPUs, and that the tasks will be indicated by PID, 333*4882a593Smuzhiyunfor example, "P3421". 334*4882a593Smuzhiyun 335*4882a593SmuzhiyunIt is entirely possible to see stall warnings from normal and from 336*4882a593Smuzhiyunexpedited grace periods at about the same time during the same run. 337