[PATCH 1/2] rvgen: validate the monitor type

From: Chaosheng Qu

Date: Thu Nov 12 2026 - 01:26:10 EST


The monitor type is pasted into the generated monitor as RV_MON_<TYPE>.
Nothing checks it, so a typo yields a monitor that cannot build and the
tool still exits 0:

$ rvgen monitor -c da -s test_da.dot -t bogus_type -n bm
$ grep RV_MON_TYPE bm/bm.c
#define RV_MON_TYPE RV_MON_BOGUS_TYPE

include/linux/rv.h defines only RV_MON_GLOBAL, RV_MON_PER_CPU,
RV_MON_PER_TASK and RV_MON_PER_OBJ, so that macro never resolves.

The accepted set is already in Monitor.monitor_types, which the help text
prints. Pass it to argparse as choices.

Signed-off-by: Chaosheng Qu <chaosheng.qu.linux@xxxxxxxxx>
Assisted-by: LLM
---
tools/verification/rvgen/__main__.py | 1 +
1 file changed, 1 insertion(+)

diff --git a/tools/verification/rvgen/__main__.py b/tools/verification/rvgen/__main__.py
index 246b43fa2..6053db5e5 100644
--- a/tools/verification/rvgen/__main__.py
+++ b/tools/verification/rvgen/__main__.py
@@ -38,6 +38,7 @@ if __name__ == '__main__':
monitor_parser.add_argument('-s', "--spec", dest="spec", required=True,
help="Monitor specification file")
monitor_parser.add_argument('-t', "--monitor_type", dest="monitor_type", required=True,
+ choices=list(Monitor.monitor_types.keys()),
help=f"Available options: {', '.join(Monitor.monitor_types.keys())}")

container_parser = subparsers.add_parser("container", parents=[parent_parser])
--
2.43.0