Skip to content

Centralize and unify usage of preempt/irq

Joel Fernandes linux-kselftest lkml 6 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v9 Latest7 patches 0 repliesNew
  2. v88 patches 9 repliesSuperseded
  3. v78 patches 2 repliesSuperseded
Earlier versions · 3
VersionPostedPatchesRepliesStatus
v6 RFC5 patches9 repliesSuperseded
v5 RFC6 patches20 repliesSuperseded
v4 RFC4 patches39 repliesSuperseded

Changes in v9 from the cover letter

- Small style changes to tracepoint code (Mathieu)
- Minor style fix to use PTR_ERR_OR_ZERO (0-day bot)
- Minor fix to test_atomic_sections to use unsigned long.
- Added Namhyung's, Mathieu's Reviewed-by to some patches.

Patches in v9 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7srcu: Add notrace variants of srcu_read_{lock,unlock}include/linux/srcu.h+17 -00 replies
2/7srcu: Add notrace variant of srcu_dereferenceinclude/linux/srcu.h+5 -00 replies
3/7trace/irqsoff: Split reset into separate functionskernel/trace/trace_irqsoff.c+19 -30 replies
4/7tracepoint: Make rcuidle tracepoint callers use SRCUinclude/linux/tracepoint.h kernel/tracepoint.c+56 -90 replies
5/7tracing: Centralize preemptirq tracepoints and unify their usageinclude/linux/ftrace.h include/linux/irqflags.h include/linux/lockdep.h +9 more+194 -2290 replies
6/7lib: Add module to simulate atomic sections for testing preemptoff tracerslib/Kconfig.debug lib/Makefile lib/test_atomic_sections.c+86 -00 replies
7/7kselftests: Add tests for the preemptoff and irqsoff tracerstools/testing/selftests/ftrace/config tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc+77 -00 replies

Reviews trailers per patch

6 of 7 patches have a Reviewed-by or Acked-by.

PatchSteven Rostedt (VMware)Paul E. McKenneyNamhyung KimMathieu DesnoyersAndy Shevchenko
1/7R-b
2/7R-b
3/7R-b
4/7R-b
5/7R-b
6/7R-b
7/7

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v9 thread

Cover letter [PATCH v9 0/7] Centralize and unify usage of preempt/irq

From: "Joel Fernandes (Google)" <joel at joelfernandes.org>

This is the next (hopefully close to final) revision of preempt/irq tracepoint centralization and unified usage across the kernel. This revision mostly has minor style corrections, reviewed-by tag additions and an improvement to the test module. All patches now have a Reviewed-by tag except for the kselftest script (patch 7/7). I have also now split out the softirq fix which really should go into an -rc cycle and is independent of this series (see [1]).

The preempt/irq tracepoints exist but not everything in the kernel is using it whenever they need to be notified that a preempt disable/enable or an irq disable enable has occurred. This makes things not work simultaneously (for example, only either lockdep or irqsoff trace-events can be used at a time).

This is particular painful to deal with, since turning on lockdep breaks tracers that install probes on IRQ events, such as the BCC atomic critical section tracer [2]. This constraint also makes it not possible to use synthetic events to trace irqsoff sections with lockdep simulataneously turned on.

This series solves that, and also results in a nice clean up of relevant parts of the kernel. Several ifdefs are simpler, and the design is more unified and better. Also as a result of this, we also speeded performance all rcuidle tracepoints since their handling is simpler.

[1] https://lkml.org/lkml/2018/6/7/1135
[2] https://github.com/iovisor/bcc/pull/1801/

v8->v9:
- Small style changes to tracepoint code (Mathieu)
- Minor style fix to use PTR_ERR_OR_ZERO (0-day bot)
- Minor fix to test_atomic_sections to use unsigned long.
- Added Namhyung's, Mathieu's Reviewed-by to some patches.

v7->v8:
- Refactored irqsoff tracer probe defines (Namhyung)

v6->v7:
- Added a module to simulate an atomic section, a kselftest to load and and trigger it which verifies the preempt-tracer and this series.

- Fixed a new warning after I rebased in early boot, this is because early_boot_irqs_disabled was set too early, I moved it after the lockdep initialization.

- added back the softirq fix since it appears it wasn't picked up.

- Ran Ingo's locking API selftest suite which are passing with this series.

- Mathieu suggested ifdef'ing the tracepoint_synchronize_unregister function incase tracepoints aren't enabled, did that.

Joel Fernandes (Google) (6):
srcu: Add notrace variant of srcu_dereference trace/irqsoff: Split reset into separate functions
tracepoint: Make rcuidle tracepoint callers use SRCU
tracing: Centralize preemptirq tracepoints and unify their usage
lib: Add module to simulate atomic sections for testing preemptoff
tracers
kselftests: Add tests for the preemptoff and irqsoff tracers

Paul McKenney (1):
srcu: Add notrace variants of srcu_read_{lock,unlock}

 include/linux/ftrace.h                        |  11 +-
 include/linux/irqflags.h                      |  11 +-
 include/linux/lockdep.h                       |   8 +-
 include/linux/preempt.h                       |   2 +-
 include/linux/srcu.h                          |  22 ++
 include/linux/tracepoint.h                    |  49 +++-
 include/trace/events/preemptirq.h             |  23 +-
 init/main.c                                   |   5 +-
 kernel/locking/lockdep.c                      |  35 +--
 kernel/sched/core.c                           |   2 +-
 kernel/trace/Kconfig                          |  22 +-
 kernel/trace/Makefile                         |   2 +-
 kernel/trace/trace_irqsoff.c                  | 253 ++++++------------
 kernel/trace/trace_preemptirq.c               |  71 +++++
 kernel/tracepoint.c                           |  16 +-
 lib/Kconfig.debug                             |   8 +
 lib/Makefile                                  |   1 +
 lib/test_atomic_sections.c                    |  77 ++++++
 tools/testing/selftests/ftrace/config         |   3 +
 .../test.d/preemptirq/irqsoff_tracer.tc       |  74 +++++
 20 files changed, 454 insertions(+), 241 deletions(-)
 create mode 100644 kernel/trace/trace_preemptirq.c
 create mode 100644 lib/test_atomic_sections.c
 create mode 100644 tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc
Signature · 5 lines
2.17.1.1185.g55be947832-goog
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html