Re: [PATCH] selftests: Fix arm64 test installation

From: John Hubbard
Date: Mon Jul 10 2023 - 19:10:33 EST


On 7/10/23 15:30, Mark Brown wrote:
...
There is a floor on binutils version for the kselftests that's more
aggressive than that for the kernel itself, though that looks like RHEL
8 which has binutils 2.30 which *should* be fine for most things - the
MTE tests won't build but they do have version detection so should skip,
I guess you might have trouble with PAC support which doesn't have
detection in the tests? It's certainly old enough that I'm surprised to
hear someone doing development for anything current with it.

This used to be a development machine, but now it is sufficiently old
that it is lightly used--that would explain how I could reserve it on
short notice for this. Maybe I'll adopt it and upgrade to a modern
distro, now that I seem to need an arm64 box.


I just tried a Debian based GCC 8 container which seems pretty happy
for arm64, the command was:

make -j16 O=/tmp/out INSTALL_PATH=/tmp/kselftest \
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
CROSS_COMPILE_COMPAT=arm-linux-gnueabihf- kselftest-install

(the compat toolchain isn't used here IIRC). It does skip the MTE tests
but otherwise isn't showing any obvious issues in the arm64 tests.


Thank you for providing a snapshot of what it looks like on gcc 8
over there.

OK, so actually, many of the failures were due to the "all" target
getting run too early (recursive make, again, uggh). With the fix below,
there are still a dozen failures in selftests, but only one in the arm64
tree, after all.

...
That does seem to work around the issue at least with a quick out of
tree build, including with GCC 8.

Great news! That's really helpful. And in fact, I have discovered two
more things:

1) The "emit_tests" target is there apparently because commit
313a4db7f3387 ("kselftest: arm64: extend toplevel skeleton Makefile")
believed that it was necessary to skip emitting tests if not on the
right native platform. I'm tempted to delete the entire emit_tests
target in both arm64 and riscv selftests (and that also seems to work
just fine) in order to simplify things, perhaps as a follow up step.

For now I'll just post the simpler fix, though.

2) riscv has copied this Makefile subtest technique to its (very small
so far) set of selftests. I have no native system to test any fixes on,
but I'm probably going to post a "blind" fix for that one, too.


thanks,
--
John Hubbard
NVIDIA