On 2026-04-27 06:55 PM, Sean Christopherson wrote: > On Mon, Apr 27, 2026, Jason Gunthorpe wrote: > > On Tue, Mar 17, 2026 at 01:55:17PM +0000, Matt Evans wrote: > > > Hi Ted, > > > > > > On 03/02/2026 01:23, Ted Logan wrote: > > > > Only build vfio self-tests on arm64 and x86_64; these are the only > > > > architectures where the vfio self-tests are run. Addresses compiler > > > > warnings for format and conversions on i386. > > > > > > > > Reported-by: kernel test robot <[email protected]> > > > > Closes: > > > > https://lore.kernel.org/oe-kbuild-all/[email protected]/ > > > > Signed-off-by: Ted Logan <[email protected]> > > > > --- > > > > Do not build vfio self-tests for 32-bit architectures, where they're > > > > untested and unmaintained. Only build these tests for arm64 and x86_64, > > > > where they're regularly tested. > > > > > > > > Compiler warning fixed by patch: > > > > > > > > In file included from > > > > tools/testing/selftests/vfio/lib/include/libvfio.h:6: > > > > tools/testing/selftests/vfio/lib/include/libvfio/iommu.h:49:2: > > > > warning: format specifies type 'unsigned long' but the argument has > > > > type 'u64' (aka 'unsigned long long') [-Wformat] > > > > 49 | VFIO_ASSERT_EQ(__iommu_unmap(iommu, region, NULL), > > > > 0); > > > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > tools/testing/selftests/vfio/lib/include/libvfio/assert.h:32:37: > > > > note: expanded from macro 'VFIO_ASSERT_EQ' > > > > 32 | #define VFIO_ASSERT_EQ(_a, _b, ...) VFIO_ASSERT_OP(_a, _b, > > > > ==, ##__VA_ARGS__) > > > > | > > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > tools/testing/selftests/vfio/lib/include/libvfio/assert.h:27:22: > > > > note: expanded from macro 'VFIO_ASSERT_OP' > > > > 26 | fprintf(stderr, " Observed: %#lx %s %#lx\n", > > > > \ > > > > | ~~~~ > > > > 27 | (u64)__lhs, #_op, (u64)__rhs); > > > > \ > > > > | ^~~~~~~~~~ > > > > --- > > > > Changes in v2: > > > > - Add white space around arch checks > > > > - Clean up uname command > > > > - Link to v1: > > > > https://lore.kernel.org/r/[email protected] > > > > --- > > > > tools/testing/selftests/vfio/Makefile | 9 +++++++++ > > > > 1 file changed, 9 insertions(+) > > > > > > > > diff --git a/tools/testing/selftests/vfio/Makefile > > > > b/tools/testing/selftests/vfio/Makefile > > > > index ead27892ab65..8e90e409e91d 100644 > > > > --- a/tools/testing/selftests/vfio/Makefile > > > > +++ b/tools/testing/selftests/vfio/Makefile > > > > @@ -1,3 +1,10 @@ > > > > +ARCH ?= $(shell uname -m) > > > > + > > > > +ifeq (,$(filter $(ARCH),arm64 x86_64)) > > > > > > This fails to build (i.e. elides the build) on my local arm64 machine, > > > because uname -m returns 'aarch64', not 'arm64'. > > > > I have the same issue on x86! The kernel uses x86 is the ARCH when you > > run it straight from the top level make > > > > make[4]: Entering directory > > '/home/jgg/oss/wip/mlx5st/tools/testing/selftests/vfio' > > Makefile:1: "Saw ARCH=x86" > > > > Even though this is a 64 bit build. > > Heh, it's much funnier when it's happening to someone else. :-) > > KVM selftests went through these exact pains. I'm pretty sure these are the > relevant commits (the empty targets one may or may not apply to VFIO). > > 9af04539d474dda4984ff4909d4568e6123c8cba KVM: selftests: Override ARCH for > x86_64 instead of using ARCH_DIR > 67730e6c53d70fb31618230f81c4acee9f72eaa3 KVM: selftests: Use canonical > $(ARCH) paths for KVM selftests directories > 43fbd8cd389faa9760c5152b1c58e893c812953b KVM: selftests: Provide empty 'all' > and 'clean' targets for unsupported ARCHs
KVM selftests don't prevent 32-bit x86 builds though, which is part of what we're trying to do here. For example running... $ make -C tools/testing/selftests/kvm ARCH=x86 CC="gcc -m32" ...produces a lot of -Wformat errors that were also seeing in VFIO selftests from the kernel test robot. I think something like this would fix your issue Jason. I haven't tested it on ARM yet: diff --git a/tools/testing/selftests/vfio/Makefile b/tools/testing/selftests/vfio/Makefile index 0684932d91bf..db71aef6bfb2 100644 --- a/tools/testing/selftests/vfio/Makefile +++ b/tools/testing/selftests/vfio/Makefile @@ -1,6 +1,11 @@ ARCH ?= $(shell uname -m) -ifeq (,$(filter $(ARCH),aarch64 arm64 x86_64)) +# VFIO selftests are currently only supported on 64-bit x86 and ARM. +ifneq (,$(filter $(ARCH),x86 x86_64 aarch64 arm64)) +SUPPORTED_ARCH := $(shell echo __LP64__ | $(CC) $(CFLAGS) -E -x c - | tail -n 1) +endif + +ifneq ($(SUPPORTED_ARCH),1) # Do nothing on unsupported architectures include ../lib.mk else

