[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8bbcc081-7e0b-4cab-8312-c5a5d60f4d7d@sirena.org.uk>
Date: Tue, 25 Jun 2024 16:32:36 +0100
From: Mark Brown <broonie@...nel.org>
To: Dev Jain <dev.jain@....com>
Cc: shuah@...nel.org, linux-arm-kernel@...ts.infradead.org,
linux-kselftest@...r.kernel.org, Catalin.Marinas@....com,
will@...nel.org, ryan.roberts@....com, rob.herring@....com,
mark.rutland@....com, linux@...linux.org.uk, suzuki.poulose@....com,
Anshuman.Khandual@....com, aneesh.kumar@...nel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 9/9] selftests: Add build infrastructure along with
README
On Tue, Jun 25, 2024 at 05:54:08PM +0530, Dev Jain wrote:
> Add arm target, individual Makefile targets, and instructions to build the
> tests, along with .gitignore files. All the Makefiles are similar to
> selftests/arm64, except abi: use TEST_CUSTOM_PROGS to override the make
> rule from lib.mk. Also, do not build ptrace_64 if we are running a
> 32-bit kernel.
Also the documentation which could probably go separately.
> +- This is a series of compatibility tests, wherein the source files are
> + built statically into a 32 bit ELF; they should pass on both 32 and 64
> + bit kernels. They are not built or run but just skipped completely when
> + env-variable ARCH is found to be different than 'arm64' or 'arm' and
> + `uname -m` reports other than 'aarch64', 'armv7l' or 'armv8l'.
These are just plain old tests for arm, the fact that we can use them to
test 32 bit mode on a 64 bit host is a nice bonus but the tests are just
as useful with actual arm hardware.
> +- If building the tests on a 64-bit kernel, please ensure that the kernel is
> + built with CONFIG_COMPAT enabled.
Running, not building.
> +- Holding true the above, ARM KSFT tests can be run within the KSelfTest
> + framework using standard Linux top-level-makefile targets. Please set
> + $(CROSS_COMPILE) to 'arm-linux-gnueabi-' or 'arm-linux-gnueabihf-'.
Or whatever your toolchain is set to! We should also consider the
LLVM=1 case here for building with clang (which is even easier as it
supports all architectures in a single binary).
> + $ make TARGETS=arm kselftest-clean
> + $ make $(CROSS_COMPILE) TARGETS=arm kselftest
> + or
> + $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
> + INSTALL_PATH=<your-installation-path> install
> + or, alternatively, only specific arm/ subtargets can be picked:
> + $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
> + ARM_SUBTARGETS="signal" INSTALL_PATH=<your-installation-path> \
> + install
I would expect the Makefile to have machinery which if we're building
for arm64 would use CROSS_COMPILE_COMPAT here and force 32 bit builds.
> +# Do not build 64-bit programs if running on a native 32-bit kernel
> +UNAME_M := $(shell uname -m)
> +ifneq (,$(filter $(UNAME_M),aarch64 arm64))
> +TEST_CUSTOM_PROGS := $(OUTPUT)/ptrace_64
Where we're building shouldn't affect what gets run - it is very common
especially in CI systems to build on one system and then run the tests
on a completely separate machine.
Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)
Powered by blists - more mailing lists