hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/include/linux/tracepoint.h
....@@ -175,6 +175,10 @@
175175 * The reason for this is to handle the "void" prototype. If a tracepoint
176176 * has a "void" prototype, then it is invalid to declare a function
177177 * as "(void *, void)".
178
+ *
179
+ * IRQ pipeline: we may not depend on RCU for data which may be
180
+ * manipulated from the out-of-band stage, so rcuidle has to be false
181
+ * if running_oob().
178182 */
179183 #define __DO_TRACE(name, proto, args, cond, rcuidle) \
180184 do { \
....@@ -223,7 +227,7 @@
223227 __DO_TRACE(name, \
224228 TP_PROTO(data_proto), \
225229 TP_ARGS(data_args), \
226
- TP_CONDITION(cond), 1); \
230
+ TP_CONDITION(cond), running_inband()); \
227231 }
228232 #else
229233 #define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args)