[PATCH v8 00/12] rv: Add Hybrid Automata monitor type, per-object and deadline monitors

Gabriele Monaco posted 12 patches 2 days, 14 hours ago
Documentation/tools/rv/index.rst              |   1 +
Documentation/tools/rv/rv-mon-stall.rst       |  44 ++
.../trace/rv/deterministic_automata.rst       |   2 +-
Documentation/trace/rv/hybrid_automata.rst    | 341 ++++++++++
Documentation/trace/rv/index.rst              |   3 +
Documentation/trace/rv/monitor_deadline.rst   |  84 +++
Documentation/trace/rv/monitor_sched.rst      |  62 +-
Documentation/trace/rv/monitor_stall.rst      |  43 ++
Documentation/trace/rv/monitor_synthesis.rst  | 117 +++-
include/linux/rv.h                            |  39 ++
include/linux/sched/deadline.h                |  27 +
include/rv/da_monitor.h                       | 644 +++++++++++++-----
include/rv/ha_monitor.h                       | 478 +++++++++++++
include/trace/events/sched.h                  |  26 +
kernel/sched/core.c                           |   5 +
kernel/sched/deadline.c                       |  51 +-
kernel/trace/rv/Kconfig                       |  18 +
kernel/trace/rv/Makefile                      |   3 +
kernel/trace/rv/monitors/deadline/Kconfig     |  10 +
kernel/trace/rv/monitors/deadline/deadline.c  |  44 ++
kernel/trace/rv/monitors/deadline/deadline.h  | 202 ++++++
kernel/trace/rv/monitors/nomiss/Kconfig       |  15 +
kernel/trace/rv/monitors/nomiss/nomiss.c      | 293 ++++++++
kernel/trace/rv/monitors/nomiss/nomiss.h      | 123 ++++
.../trace/rv/monitors/nomiss/nomiss_trace.h   |  19 +
kernel/trace/rv/monitors/opid/Kconfig         |  11 +-
kernel/trace/rv/monitors/opid/opid.c          | 111 +--
kernel/trace/rv/monitors/opid/opid.h          |  86 +--
kernel/trace/rv/monitors/opid/opid_trace.h    |   4 +
kernel/trace/rv/monitors/stall/Kconfig        |  13 +
kernel/trace/rv/monitors/stall/stall.c        | 150 ++++
kernel/trace/rv/monitors/stall/stall.h        |  81 +++
kernel/trace/rv/monitors/stall/stall_trace.h  |  19 +
kernel/trace/rv/rv_trace.h                    |  67 +-
tools/verification/models/deadline/nomiss.dot |  41 ++
tools/verification/models/sched/opid.dot      |  36 +-
tools/verification/models/stall.dot           |  22 +
tools/verification/rvgen/__main__.py          |   8 +-
tools/verification/rvgen/rvgen/automata.py    | 151 +++-
tools/verification/rvgen/rvgen/dot2c.py       |  47 ++
tools/verification/rvgen/rvgen/dot2k.py       | 489 ++++++++++++-
tools/verification/rvgen/rvgen/generator.py   |   4 +-
.../rvgen/rvgen/templates/dot2k/main.c        |   2 +-
.../rvgen/templates/dot2k/trace_hybrid.h      |  16 +
44 files changed, 3605 insertions(+), 447 deletions(-)
create mode 100644 Documentation/tools/rv/rv-mon-stall.rst
create mode 100644 Documentation/trace/rv/hybrid_automata.rst
create mode 100644 Documentation/trace/rv/monitor_deadline.rst
create mode 100644 Documentation/trace/rv/monitor_stall.rst
create mode 100644 include/rv/ha_monitor.h
create mode 100644 kernel/trace/rv/monitors/deadline/Kconfig
create mode 100644 kernel/trace/rv/monitors/deadline/deadline.c
create mode 100644 kernel/trace/rv/monitors/deadline/deadline.h
create mode 100644 kernel/trace/rv/monitors/nomiss/Kconfig
create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss.c
create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss.h
create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss_trace.h
create mode 100644 kernel/trace/rv/monitors/stall/Kconfig
create mode 100644 kernel/trace/rv/monitors/stall/stall.c
create mode 100644 kernel/trace/rv/monitors/stall/stall.h
create mode 100644 kernel/trace/rv/monitors/stall/stall_trace.h
create mode 100644 tools/verification/models/deadline/nomiss.dot
create mode 100644 tools/verification/models/stall.dot
create mode 100644 tools/verification/rvgen/rvgen/templates/dot2k/trace_hybrid.h
[PATCH v8 00/12] rv: Add Hybrid Automata monitor type, per-object and deadline monitors
Posted by Gabriele Monaco 2 days, 14 hours ago
This series contains several related changes, the main areas are:

* hybrid automata

    Hybrid automata are an extension of deterministic automata where each
    state transition is validating a constraint on a finite number of
    environment variables.

    Hybrid automata can be used to implement timed automata, where the
    environment variables are clocks.

* per-object monitors

    Define the generic per-object monitor allow RV monitors on any kind
    of object where the user can specify how to get an id (e.g. pid for
    tasks) and the data type for the monitor_target (e.g. struct
    task_struct * for tasks).

    The monitor storage (e.g. the rv monitor, pointer to the target, etc.)
    is stored in a hash table indexed by id.

* deadline monitors collection

    Add the nomiss monitor to validate timing aspects of the deadline
    scheduler, as it works for tasks and servers, it's inclusion
    requires also per-object monitors (for dl entities).

Note: this submission removed all patches depending on enqueue/dequeue
tracepoints. The current series is ready for inclusion while the other
patches will be submitted separately.

The entire series can also be found on:

  git.kernel.org/pub/scm/linux/kernel/git/gmonaco/linux.git rv_hybrid_automata

Changes since V7:
* Fix wrong title in monitor_deadline docs
* Warn if kallsyms lookup fails
* Minor improvement in hybrid automata docs
* Use u8 instead of uint8_t in deadline tracepoints and models
* Drop enqueue/dequeue tracepoints and dependent patches from the
  series, will submit separately

[1] - https://lore.kernel.org/lkml/20260310105627.332044-1-gmonaco@redhat.com

To: Steven Rostedt <rostedt@goodmis.org>
To: Nam Cao <namcao@linutronix.de>
To: Juri Lelli <jlelli@redhat.com>
Cc: Tomas Glozar <tglozar@redhat.com>
Cc: Clark Williams <williams@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: linux-trace-kernel@vger.kernel.org

Gabriele Monaco (12):
  rv: Unify DA event handling functions across monitor types
  rv: Add Hybrid Automata monitor type
  verification/rvgen: Allow spaces in and events strings
  verification/rvgen: Add support for Hybrid Automata
  Documentation/rv: Add documentation about hybrid automata
  rv: Add sample hybrid monitor stall
  rv: Convert the opid monitor to a hybrid automaton
  rv: Add support for per-object monitors in DA/HA
  verification/rvgen: Add support for per-obj monitors
  sched: Add deadline tracepoints
  sched/deadline: Move some utility functions to deadline.h
  rv: Add nomiss deadline monitor

 Documentation/tools/rv/index.rst              |   1 +
 Documentation/tools/rv/rv-mon-stall.rst       |  44 ++
 .../trace/rv/deterministic_automata.rst       |   2 +-
 Documentation/trace/rv/hybrid_automata.rst    | 341 ++++++++++
 Documentation/trace/rv/index.rst              |   3 +
 Documentation/trace/rv/monitor_deadline.rst   |  84 +++
 Documentation/trace/rv/monitor_sched.rst      |  62 +-
 Documentation/trace/rv/monitor_stall.rst      |  43 ++
 Documentation/trace/rv/monitor_synthesis.rst  | 117 +++-
 include/linux/rv.h                            |  39 ++
 include/linux/sched/deadline.h                |  27 +
 include/rv/da_monitor.h                       | 644 +++++++++++++-----
 include/rv/ha_monitor.h                       | 478 +++++++++++++
 include/trace/events/sched.h                  |  26 +
 kernel/sched/core.c                           |   5 +
 kernel/sched/deadline.c                       |  51 +-
 kernel/trace/rv/Kconfig                       |  18 +
 kernel/trace/rv/Makefile                      |   3 +
 kernel/trace/rv/monitors/deadline/Kconfig     |  10 +
 kernel/trace/rv/monitors/deadline/deadline.c  |  44 ++
 kernel/trace/rv/monitors/deadline/deadline.h  | 202 ++++++
 kernel/trace/rv/monitors/nomiss/Kconfig       |  15 +
 kernel/trace/rv/monitors/nomiss/nomiss.c      | 293 ++++++++
 kernel/trace/rv/monitors/nomiss/nomiss.h      | 123 ++++
 .../trace/rv/monitors/nomiss/nomiss_trace.h   |  19 +
 kernel/trace/rv/monitors/opid/Kconfig         |  11 +-
 kernel/trace/rv/monitors/opid/opid.c          | 111 +--
 kernel/trace/rv/monitors/opid/opid.h          |  86 +--
 kernel/trace/rv/monitors/opid/opid_trace.h    |   4 +
 kernel/trace/rv/monitors/stall/Kconfig        |  13 +
 kernel/trace/rv/monitors/stall/stall.c        | 150 ++++
 kernel/trace/rv/monitors/stall/stall.h        |  81 +++
 kernel/trace/rv/monitors/stall/stall_trace.h  |  19 +
 kernel/trace/rv/rv_trace.h                    |  67 +-
 tools/verification/models/deadline/nomiss.dot |  41 ++
 tools/verification/models/sched/opid.dot      |  36 +-
 tools/verification/models/stall.dot           |  22 +
 tools/verification/rvgen/__main__.py          |   8 +-
 tools/verification/rvgen/rvgen/automata.py    | 151 +++-
 tools/verification/rvgen/rvgen/dot2c.py       |  47 ++
 tools/verification/rvgen/rvgen/dot2k.py       | 489 ++++++++++++-
 tools/verification/rvgen/rvgen/generator.py   |   4 +-
 .../rvgen/rvgen/templates/dot2k/main.c        |   2 +-
 .../rvgen/templates/dot2k/trace_hybrid.h      |  16 +
 44 files changed, 3605 insertions(+), 447 deletions(-)
 create mode 100644 Documentation/tools/rv/rv-mon-stall.rst
 create mode 100644 Documentation/trace/rv/hybrid_automata.rst
 create mode 100644 Documentation/trace/rv/monitor_deadline.rst
 create mode 100644 Documentation/trace/rv/monitor_stall.rst
 create mode 100644 include/rv/ha_monitor.h
 create mode 100644 kernel/trace/rv/monitors/deadline/Kconfig
 create mode 100644 kernel/trace/rv/monitors/deadline/deadline.c
 create mode 100644 kernel/trace/rv/monitors/deadline/deadline.h
 create mode 100644 kernel/trace/rv/monitors/nomiss/Kconfig
 create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss.c
 create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss.h
 create mode 100644 kernel/trace/rv/monitors/nomiss/nomiss_trace.h
 create mode 100644 kernel/trace/rv/monitors/stall/Kconfig
 create mode 100644 kernel/trace/rv/monitors/stall/stall.c
 create mode 100644 kernel/trace/rv/monitors/stall/stall.h
 create mode 100644 kernel/trace/rv/monitors/stall/stall_trace.h
 create mode 100644 tools/verification/models/deadline/nomiss.dot
 create mode 100644 tools/verification/models/stall.dot
 create mode 100644 tools/verification/rvgen/rvgen/templates/dot2k/trace_hybrid.h


base-commit: 7aaa8047eafd0bd628065b15757d9b48c5f9c07d
-- 
2.53.0