Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> writes: > On Wed, Jan 15, 2020 at 6:13 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: >> >> From: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> >> >> The runqslower tool refuses to build without a file to read vmlinux BTF >> from. The build fails with an error message to override the location by >> setting the VMLINUX_BTF variable if autodetection fails. However, the >> Makefile doesn't actually work with that override - the error message is >> still emitted. > > Do you have example command with VMLINUX_BTF override that didn't work > (and what error message was emitted)? Before this patch: $ cd ~/build/linux/tools/bpf/runqslower $ make Makefile:18: *** "Can't detect kernel BTF, use VMLINUX_BTF to specify it explicitly". Stop. $ make VMLINUX_BTF=~/build/linux/vmlinux Makefile:18: *** "Can't detect kernel BTF, use VMLINUX_BTF to specify it explicitly". Stop. >> Fix this by only doing auto-detection if no override is set. And while >> we're at it, also look for a vmlinux file in the current kernel build dir >> if none if found on the running kernel. >> >> Fixes: 9c01546d26d2 ("tools/bpf: Add runqslower tool to tools/bpf") >> Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> >> --- >> tools/bpf/runqslower/Makefile | 16 ++++++++++------ >> 1 file changed, 10 insertions(+), 6 deletions(-) >> >> diff --git a/tools/bpf/runqslower/Makefile b/tools/bpf/runqslower/Makefile >> index cff2fbcd29a8..fb93ce2bf2fe 100644 >> --- a/tools/bpf/runqslower/Makefile >> +++ b/tools/bpf/runqslower/Makefile >> @@ -10,12 +10,16 @@ CFLAGS := -g -Wall >> >> # Try to detect best kernel BTF source >> KERNEL_REL := $(shell uname -r) >> -ifneq ("$(wildcard /sys/kernel/btf/vmlinux)","") >> -VMLINUX_BTF := /sys/kernel/btf/vmlinux >> -else ifneq ("$(wildcard /boot/vmlinux-$(KERNEL_REL))","") >> -VMLINUX_BTF := /boot/vmlinux-$(KERNEL_REL) >> -else >> -$(error "Can't detect kernel BTF, use VMLINUX_BTF to specify it explicitly") >> +ifeq ("$(VMLINUX_BTF)","") >> + ifneq ("$(wildcard /sys/kernel/btf/vmlinux)","") >> + VMLINUX_BTF := /sys/kernel/btf/vmlinux >> + else ifneq ("$(wildcard /boot/vmlinux-$(KERNEL_REL))","") >> + VMLINUX_BTF := /boot/vmlinux-$(KERNEL_REL) >> + else ifneq ("$(wildcard $(abspath ../../../vmlinux))","") >> + VMLINUX_BTF := $(abspath ../../../vmlinux) > > I'm planning to mirror runqslower into libbpf Github repo and this > ../../../vmlinux piece will be completely out of place in that > context. Also it only will help when building kernel in-tree. So I'd > rather not add this. Well building the kernel in-tree is something people sometimes want to do ;) Specifically, the selftests depend on this, so we should at least fix those; but I guess it could work to just pass in VMLINUX_BTF as part of the make -C from the selftests dir? I'll try that... -Toke