[PATCH v5 2/3] perf jevents: Make the model argument optional

From: TAKANO Mitsuhiro

Date: Wed Nov 11 2026 - 08:27:35 EST


The model argument carries a default of "all", but a positional argument
with a default and no nargs is still required: "jevents.py x86 <dir>" exits
with "the following arguments are required: model", and so does any caller
that only wants the tables for an architecture.

Make it nargs='?' so the default is reachable and an omitted model means
"all". Builds pass it explicitly, so the generated tables do not change.

Fixes: 5a09b1fd1b1f ("perf jevents: Add model list option")
Signed-off-by: TAKANO Mitsuhiro <takano32@xxxxxxxxx>
---
v5: patch 3 says which keys a table may carry and checks the tree
against that list, replacing the near-miss report that v4 had.
The list is 51 names, 47 of which jevents.py reads; an architecture
that is not there or is named as a path is an error (status 2)
instead of a silent pass, and an object written without the list
brackets is reported. The name of a metricgroup is not treated as
a key. jsonschema is not used because perf's build would then
require it, and the list holds the same names a schema would.
The target is check-jevents, next to check-headers, and takes
JEVENTS_CHECK_ARCH; a shell test covers a reported key, a clean
tree and a missing architecture.

tools/perf/pmu-events/jevents.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
index 61f778dcc1e5..f4dca47eb49b 100755
--- a/tools/perf/pmu-events/jevents.py
+++ b/tools/perf/pmu-events/jevents.py
@@ -1486,10 +1486,10 @@ def main() -> None:

ap = argparse.ArgumentParser()
ap.add_argument('arch', help='Architecture name like x86')
- ap.add_argument('model', help='''Select a model such as skylake to
-reduce the code size. Normally set to "all". For architectures like
-ARM64 with an implementor/model, the model must include the implementor
-such as "arm/cortex-a34".''',
+ ap.add_argument('model', nargs='?', help='''Select a model such as skylake to
+reduce the code size. Normally set to "all", and that is what an omitted
+model means. For architectures like ARM64 with an implementor/model, the
+model must include the implementor such as "arm/cortex-a34".''',
default='all')
ap.add_argument(
'starting_dir',
--
2.53.0