From nobody Thu Oct 2 18:05:54 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 764A82DF158 for ; Sun, 14 Sep 2025 18:11:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757873496; cv=none; b=Dgxbz1n/C8wlwKB2Kg7PQELyOit5BavCrRO33SBU9yFNGjnDokQgLqz3a7UDCSZUBuXUneZk+OtnvBZSVhFhHdUy2HOVvh+Cjjck0M3wqkXXyy6lw10dFmFMxKKqgFfNI/WOnx/iL7toQIwERugcMX/PpELgTkeiKfJ7zaNkcBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757873496; c=relaxed/simple; bh=1WwvqDKf0QDSdRuOaIGsvlbk05F9n0Yqdb/6icbfmps=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=PD3+KS4OxaUqObTEF+zGgL9aE6+IbrUFArceXyMpGuzjlI27UvePZ4J98TvhqOsMgb+nvmKTo2r/z7xNHK5laYjv6sKP1N+z8IaJzO2C0ZVXFvctW+vsOGC8ZStbQjUVQ9a7JVqyP6MsCjd5Eky7KP3LW7p9l5KfUVxorBkwmHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=sFQURII1; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="sFQURII1" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-265e92cc3aeso3485975ad.3 for ; Sun, 14 Sep 2025 11:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1757873494; x=1758478294; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=L4s2aErMXwbblcMTm4M6JdhW2aksOKkf+yDfm3iNVF4=; b=sFQURII1CL1dn+4suFGf1LixhYmh5WFag6j1/XCzHMqiElUd80Xz3SrydbjlLOVUt/ XdZJeJPKJHAa5R9cxYj69xX4RKKQb5ekzfs1sXdznn3tuYV0YXlZTahSeif1TakJMJqt 9TZHPb35VaN2MYUuwqsEQPNlzxps1qspteutFVtSBJ6MmUGXnFqVJm0KcwE2os4wwgAl 6/R3fFazS5UvV7ES6GgyxazWHoeBSgMWtV+ZpV9DODVskg3vsdWaMsFAeE4KoK38jhaX APOLm7N+khwfk0AJ+p8g7DaUXNJiY3ccqVBaexvHBuMCWgyBm6VdYaDhvpI1bRozdq2J YKtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757873494; x=1758478294; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=L4s2aErMXwbblcMTm4M6JdhW2aksOKkf+yDfm3iNVF4=; b=dedWUe4yNOIR+OTmX69Mrj+uhIHHGjX53lIpzlE6YG4FZjkTmOgkp6Li7RJqMWHxx9 bJJjW0hBEb3Nkyx/cpTtdprdN1d1I61juDe8zJ5pJtcKqRsupvKIFRDL/AkrzmEPfYNl S4Q1wHE3q4JzaqOPY9P9kZ8mmKE+mg7FkQLcR2L4ZUN2QivaLdlO48oa5546ZcvSCHsk rtp/jrX/t7MqOu9o5W20VWT1FrhxGm88D/yV5/KAlh/ut9j3vLvI2JnWNaIcOYTZ63dN hMPuS5uDdcUzFngAFQZYT4aU0d5ASINY5tCHuY1DD7cKj73G/W9bWsnu1Lrh4uFKpPew xAMA== X-Forwarded-Encrypted: i=1; AJvYcCXDMAmMYngnJ7/2/ngSQ4fuD4VNcVgZe5+eeFM3db6XKrRBl2q9QsZvb24acHex/VgAZQluX0XcVAnd6DM=@vger.kernel.org X-Gm-Message-State: AOJu0YyLvTz//ZHwjLB39usBH/fjG/FFYXWyQdxDrzKNWaa2A123zat+ 0G0iS9iWqNYHSJOYNpbrdpJhQBVGG9KQhOCjFDkTkKxZE4Fx1hsioUfSDYIrQuRT7R5V85pO1YF Cq4xLJJHFvQ== X-Google-Smtp-Source: AGHT+IGCKgz3H4b0gcGJcDLHUil8CqaBh/XjMG/8Y58f92Vkxj985sFbEkesTjTq/IdPa6yDF36PpIuW8hVd X-Received: from plbp14.prod.google.com ([2002:a17:903:174e:b0:24b:14e1:af2a]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:18a:b0:25b:a9ce:5167 with SMTP id d9443c01a7336-25d27a29a29mr117103275ad.52.1757873493824; Sun, 14 Sep 2025 11:11:33 -0700 (PDT) Date: Sun, 14 Sep 2025 11:11:04 -0700 In-Reply-To: <20250914181121.1952748-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250914181121.1952748-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.384.g4c02a37b29-goog Message-ID: <20250914181121.1952748-5-irogers@google.com> Subject: [PATCH v4 04/21] perf jevents: Support copying the source json files to OUTPUT From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , Thomas Falcon , Andi Kleen , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, bpf@vger.kernel.org, Atish Patra , Beeman Strong , Leo Yan , Vince Weaver Cc: Thomas Richter Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The jevents command expects all json files to be organized under a single directory. When generating json files from scripts (to reduce laborious copy and paste in the json) we don't want to generate the json into the source directory if there is an OUTPUT directory specified. This change adds a GEN_JSON for this case where the GEN_JSON copies the JSON files to OUTPUT, only when OUTPUT is specified. The Makefile.perf clean code is updated to clean up this directory when present. This patch is part of: https://lore.kernel.org/lkml/20240926173554.404411-12-irogers@google.com/ which was similarly adding support for generating json in scripts for the consumption of jevents.py. Signed-off-by: Ian Rogers Tested-by: Thomas Richter --- tools/perf/Makefile.perf | 21 ++++++++++++++++----- tools/perf/pmu-events/Build | 18 ++++++++++++------ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index e2150acc2c13..cc1635335586 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -1272,9 +1272,24 @@ endif # CONFIG_PERF_BPF_SKEL bpf-skel-clean: $(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS) $(SKE= L_OUT)/vmlinux.h =20 +pmu-events-clean: +ifeq ($(OUTPUT),) + $(call QUIET_CLEAN, pmu-events) $(RM) \ + pmu-events/pmu-events.c \ + pmu-events/metric_test.log \ + pmu-events/test-empty-pmu-events.c \ + pmu-events/empty-pmu-events.log +else # When an OUTPUT directory is present, clean up the copied pmu-events= /arch directory. + $(call QUIET_CLEAN, pmu-events) $(RM) -r $(OUTPUT)pmu-events/arch \ + $(OUTPUT)pmu-events/pmu-events.c \ + $(OUTPUT)pmu-events/metric_test.log \ + $(OUTPUT)pmu-events/test-empty-pmu-events.c \ + $(OUTPUT)pmu-events/empty-pmu-events.log +endif + clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-cl= ean $(LIBPERF)-clean \ arm64-sysreg-defs-clean fixdep-clean python-clean bpf-skel-clean \ - tests-coresight-targets-clean + tests-coresight-targets-clean pmu-events-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive \ $(OUTPUT)perf-iostat $(LANG_BINDINGS) $(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '*.a' -delete -o \ @@ -1287,10 +1302,6 @@ clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)= -clean $(LIBSYMBOL)-clean $( $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ $(OUTPUT)util/intel-pt-decoder/inat-tables.c \ $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \ - $(OUTPUT)pmu-events/pmu-events.c \ - $(OUTPUT)pmu-events/test-empty-pmu-events.c \ - $(OUTPUT)pmu-events/empty-pmu-events.log \ - $(OUTPUT)pmu-events/metric_test.log \ $(OUTPUT)$(fadvise_advice_array) \ $(OUTPUT)$(fsconfig_arrays) \ $(OUTPUT)$(fsmount_arrays) \ diff --git a/tools/perf/pmu-events/Build b/tools/perf/pmu-events/Build index 32f387d48908..1503a16e662a 100644 --- a/tools/perf/pmu-events/Build +++ b/tools/perf/pmu-events/Build @@ -1,7 +1,6 @@ pmu-events-y +=3D pmu-events.o JDIR =3D pmu-events/arch/$(SRCARCH) -JSON =3D $(shell [ -d $(JDIR) ] && \ - find $(JDIR) -name '*.json' -o -name 'mapfile.csv') +JSON =3D $(shell find pmu-events/arch -name *.json -o -name *.csv) JDIR_TEST =3D pmu-events/arch/test JSON_TEST =3D $(shell [ -d $(JDIR_TEST) ] && \ find $(JDIR_TEST) -name '*.json') @@ -29,13 +28,20 @@ $(PMU_EVENTS_C): $(EMPTY_PMU_EVENTS_C) $(call rule_mkdir) $(Q)$(call echo-cmd,gen)cp $< $@ else +# Copy checked-in json for generation. +$(OUTPUT)pmu-events/arch/%: pmu-events/arch/% + $(call rule_mkdir) + $(Q)$(call echo-cmd,gen)cp $< $@ + +GEN_JSON =3D $(patsubst %,$(OUTPUT)%,$(JSON)) + $(METRIC_TEST_LOG): $(METRIC_TEST_PY) $(METRIC_PY) $(call rule_mkdir) $(Q)$(call echo-cmd,test)$(PYTHON) $< 2> $@ || (cat $@ && false) =20 -$(TEST_EMPTY_PMU_EVENTS_C): $(JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY= ) $(METRIC_TEST_LOG) +$(TEST_EMPTY_PMU_EVENTS_C): $(GEN_JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRI= C_PY) $(METRIC_TEST_LOG) $(call rule_mkdir) - $(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) none none pmu-events/arch= $@ + $(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) none none $(OUTPUT)pmu-ev= ents/arch $@ =20 $(EMPTY_PMU_EVENTS_TEST_LOG): $(EMPTY_PMU_EVENTS_C) $(TEST_EMPTY_PMU_EVENT= S_C) $(call rule_mkdir) @@ -63,10 +69,10 @@ $(OUTPUT)%.pylint_log: % $(call rule_mkdir) $(Q)$(call echo-cmd,test)pylint "$<" > $@ || (cat $@ && rm $@ && false) =20 -$(PMU_EVENTS_C): $(JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY) $(METRIC_= TEST_LOG) \ +$(PMU_EVENTS_C): $(GEN_JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY) $(MET= RIC_TEST_LOG) \ $(EMPTY_PMU_EVENTS_TEST_LOG) $(PMU_EVENTS_MYPY_TEST_LOGS) $(PMU_EVENTS= _PYLINT_TEST_LOGS) $(call rule_mkdir) - $(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) $(JEVENTS_ARCH) $(JEVENTS= _MODEL) pmu-events/arch $@ + $(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) $(JEVENTS_ARCH) $(JEVENTS= _MODEL) $(OUTPUT)pmu-events/arch $@ endif =20 # pmu-events.c file is generated in the OUTPUT directory so it needs a --=20 2.51.0.384.g4c02a37b29-goog