From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Ian Rogers <irogers@google.com>
Cc: Christoph Hellwig <hch@infradead.org>,
Daniel Wagner <dwagner@suse.de>, Yuzhuo Jing <yuzhuo@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
James Clark <james.clark@linaro.org>,
Tomas Glozar <tglozar@redhat.com>,
Michael Jeanson <mjeanson@efficios.com>,
Dmitrii Dolgov <9erthalion6@gmail.com>,
Alexandre Chartre <alexandre.chartre@oracle.com>,
Leo Yan <leo.yan@arm.com>, German Gomez <german.gomez@arm.com>,
Anubhav Shelat <ashelat@redhat.com>,
linux-perf-users@vger.kernel.org,
linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 1/3] perf build: Add libnvme feature detection
Date: Fri, 13 Nov 2026 11:12:32 -0800 [thread overview]
Message-ID: <20261113191234.2509964-2-irogers@google.com> (raw)
In-Reply-To: <20261113191234.2509964-1-irogers@google.com>
Introduce a feature check for libnvme using pkg-config so that the
tool-provided NVMe PMU can be conditionally compiled when libnvme is
available.
Add libnvme to FEATURE_TESTS_BASIC, FEATURE_DISPLAY, FEATURE_PKG_CONFIG,
and test-all.c so fast-path discovery and individual feature checks stay
consistent with the pkg-config flags used during linking.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/build/Makefile.feature | 5 ++++-
tools/build/feature/Makefile | 4 ++++
tools/build/feature/test-all.c | 5 +++++
tools/build/feature/test-libnvme.c | 11 +++++++++++
tools/perf/Makefile.config | 12 ++++++++++++
5 files changed, 36 insertions(+), 1 deletion(-)
create mode 100644 tools/build/feature/test-libnvme.c
diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 4d37d11f674c..54b51251c4c3 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -73,6 +73,7 @@ FEATURE_TESTS_BASIC := \
libbfd \
libbfd-threadsafe \
libelf \
+ libnvme \
libelf-getphdrnum \
libelf-gelf_getnote \
libelf-getshdrstrndx \
@@ -143,6 +144,7 @@ FEATURE_DISPLAY ?= \
libdw \
glibc \
libelf \
+ libnvme \
libnuma \
numa_num_possible_cpus \
python-module \
@@ -168,7 +170,8 @@ FEATURE_GROUP_MEMBERS-libbfd = libbfd-liberty libbfd-liberty-z
FEATURE_PKG_CONFIG ?= \
babeltrace2-ctf-writer \
libtraceevent \
- libtracefs
+ libtracefs \
+ libnvme
feature_pkg_config = $(eval $(feature_pkg_config_code))
define feature_pkg_config_code
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 10340a537224..851f458163f6 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -24,6 +24,7 @@ FILES= \
test-cxa-demangle.bin \
test-libcap.bin \
test-libelf.bin \
+ test-libnvme.bin \
test-libelf-getphdrnum.bin \
test-libelf-gelf_getnote.bin \
test-libelf-getshdrstrndx.bin \
@@ -147,6 +148,9 @@ $(OUTPUT)test-libcap.bin:
$(OUTPUT)test-libelf.bin:
$(BUILD) -lelf
+$(OUTPUT)test-libnvme.bin:
+ $(BUILD) # -lnvme provided by $(FEATURE_CHECK_LDFLAGS-libnvme)
+
$(OUTPUT)test-eventfd.bin:
$(BUILD)
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index 4a6890290f74..155f92efc2c8 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -150,6 +150,10 @@
# include "test-libopenssl.c"
#undef main
+#define main main_test_libnvme
+# include "test-libnvme.c"
+#undef main
+
int main(int argc, char *argv[])
{
main_test_python_module();
@@ -183,6 +187,7 @@ int main(int argc, char *argv[])
main_test_libzstd();
main_test_libtraceevent();
main_test_libopenssl();
+ main_test_libnvme();
return 0;
}
diff --git a/tools/build/feature/test-libnvme.c b/tools/build/feature/test-libnvme.c
new file mode 100644
index 000000000000..3fefad70a680
--- /dev/null
+++ b/tools/build/feature/test-libnvme.c
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
+#include <libnvme.h>
+
+int main(void)
+{
+ nvme_root_t r = nvme_scan(NULL);
+
+ if (r)
+ nvme_free_tree(r);
+ return 0;
+}
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index b4764f69f47f..d82273dadf39 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -1065,6 +1065,18 @@ ifndef NO_CAPSTONE
endif
endif
+ifndef NO_LIBNVME
+ ifeq ($(feature-libnvme), 1)
+ CFLAGS += -DHAVE_LIBNVME_SUPPORT $(shell $(PKG_CONFIG) --cflags libnvme)
+ LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libnvme)
+ EXTLIBS += $(shell $(PKG_CONFIG) --libs-only-l libnvme)
+ $(call detected,CONFIG_LIBNVME)
+ else
+ $(warning No libnvme found, disables NVMe PMU support, please install libnvme-dev/libnvme-devel)
+ NO_LIBNVME := 1
+ endif
+endif
+
ifdef EXTRA_TESTS
$(call detected,CONFIG_EXTRA_TESTS)
CFLAGS += -DHAVE_EXTRA_TESTS
--
2.56.1.703.gf848ed807c-goog
next prev parent reply other threads:[~2026-11-13 19:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-13 19:12 [PATCH v3 0/3] perf pmu: Add tool-provided NVMe PMU Ian Rogers
2026-11-13 19:12 ` Ian Rogers [this message]
2026-11-13 19:22 ` [PATCH v3 1/3] perf build: Add libnvme feature detection sashiko-bot
2026-11-13 19:12 ` [PATCH v3 2/3] perf pmu: Implement tool-provided NVMe PMU Ian Rogers
2026-11-13 19:40 ` sashiko-bot
2026-11-13 19:12 ` [PATCH v3 3/3] perf tests: Add NVMe PMU event parsing test Ian Rogers
2026-11-13 19:28 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261113191234.2509964-2-irogers@google.com \
--to=irogers@google.com \
--cc=9erthalion6@gmail.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexandre.chartre@oracle.com \
--cc=ashelat@redhat.com \
--cc=dwagner@suse.de \
--cc=german.gomez@arm.com \
--cc=hch@infradead.org \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=leo.yan@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mjeanson@efficios.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglozar@redhat.com \
--cc=yuzhuo@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.