On Tue, 14 Dec 2021 18:34:50 +0200 Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > Looks lightly tedious. Can't we have "slow" (or whatever) versions of > the trace macros so we could just declare these the same was as before > without having to manually write that wrapper for every event? That would be quite tedious as well ;-) There's a couple of problems with doing it as a macro. One is that the data would need to be saved on stack. There's no guarantee that there will be enough stack available. We could probably add a way to limit the size. That is, adding something like: #define MAX_SLOW_TRACE_ENTRY_SIZE 256 BUILD_BUG_ON(sizeof(trace_event_raw_##call) > MAX_SLOW_TRACE_ENTRY_SIZE); and then have the entry done outside the trace event. But even with that, this is specific to the perf and ftrace code, and not to the trace point that is called. We would need to figure out a way to make the macro work for all the users. It may be possible to do, but it will be far from trivial, and I'm not sure I want this to be an easy option. Locks should not be taken from trace events in general, as they are not tested with lockdep when the trace points are not enabled, and could hide deadlocks that may not appear until running on production. -- Steve