Message ID | 20220207152109.197566-34-broonie@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | a0f2eb641b7c4ff753374f8b2043b8bbb1666a96 |
Headers | show |
Series | arm64/sme: Initial support for the Scalable Matrix Extension | expand |
On 2/7/22 8:21 AM, Mark Brown wrote: > Provide RDVL helpers for SME and extend the main vector configuration tests > to cover SME. > > Signed-off-by: Mark Brown <broonie@kernel.org> > --- > tools/testing/selftests/arm64/fp/.gitignore | 1 + > tools/testing/selftests/arm64/fp/Makefile | 3 ++- > tools/testing/selftests/arm64/fp/rdvl-sme.c | 14 ++++++++++++++ > tools/testing/selftests/arm64/fp/rdvl.S | 10 ++++++++++ > tools/testing/selftests/arm64/fp/rdvl.h | 1 + > tools/testing/selftests/arm64/fp/vec-syscfg.c | 10 ++++++++++ > 6 files changed, 38 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/arm64/fp/rdvl-sme.c > > diff --git a/tools/testing/selftests/arm64/fp/.gitignore b/tools/testing/selftests/arm64/fp/.gitignore > index c50d86331ed2..6e9a610c5e5d 100644 > --- a/tools/testing/selftests/arm64/fp/.gitignore > +++ b/tools/testing/selftests/arm64/fp/.gitignore > @@ -1,5 +1,6 @@ > fp-pidbench > fpsimd-test > +rdvl-sme > rdvl-sve > sve-probe-vls > sve-ptrace > diff --git a/tools/testing/selftests/arm64/fp/Makefile b/tools/testing/selftests/arm64/fp/Makefile > index 95f0b877a060..a224fff8082b 100644 > --- a/tools/testing/selftests/arm64/fp/Makefile > +++ b/tools/testing/selftests/arm64/fp/Makefile > @@ -3,7 +3,7 @@ > CFLAGS += -I../../../../../usr/include/ > TEST_GEN_PROGS := sve-ptrace sve-probe-vls vec-syscfg > TEST_PROGS_EXTENDED := fp-pidbench fpsimd-test fpsimd-stress \ > - rdvl-sve \ > + rdvl-sme rdvl-sve \ > sve-test sve-stress \ > vlset > > @@ -13,6 +13,7 @@ fp-pidbench: fp-pidbench.S asm-utils.o > $(CC) -nostdlib $^ -o $@ > fpsimd-test: fpsimd-test.o asm-utils.o > $(CC) -nostdlib $^ -o $@ > +rdvl-sme: rdvl-sme.o rdvl.o > rdvl-sve: rdvl-sve.o rdvl.o > sve-ptrace: sve-ptrace.o > sve-probe-vls: sve-probe-vls.o rdvl.o > diff --git a/tools/testing/selftests/arm64/fp/rdvl-sme.c b/tools/testing/selftests/arm64/fp/rdvl-sme.c > new file mode 100644 > index 000000000000..49b0b2e08bac > --- /dev/null > +++ b/tools/testing/selftests/arm64/fp/rdvl-sme.c > @@ -0,0 +1,14 @@ > +// SPDX-License-Identifier: GPL-2.0-only > + > +#include <stdio.h> > + > +#include "rdvl.h" > + > +int main(void) > +{ > + int vl = rdvl_sme(); > + > + printf("%d\n", vl); > + > + return 0; > +} > diff --git a/tools/testing/selftests/arm64/fp/rdvl.S b/tools/testing/selftests/arm64/fp/rdvl.S > index c916c1c9defd..20dc29996dc6 100644 > --- a/tools/testing/selftests/arm64/fp/rdvl.S > +++ b/tools/testing/selftests/arm64/fp/rdvl.S > @@ -1,6 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0-only > // Copyright (C) 2021 ARM Limited. > > +#include "sme-inst.h" > + > .arch_extension sve > > .globl rdvl_sve > @@ -8,3 +10,11 @@ rdvl_sve: > hint 34 // BTI C > rdvl x0, #1 > ret > + > +.globl rdvl_sme > +rdvl_sme: > + hint 34 // BTI C > + > + rdsvl 0, 1 > + > + ret > diff --git a/tools/testing/selftests/arm64/fp/rdvl.h b/tools/testing/selftests/arm64/fp/rdvl.h > index 7c9d953fc9e7..5d323679fbc9 100644 > --- a/tools/testing/selftests/arm64/fp/rdvl.h > +++ b/tools/testing/selftests/arm64/fp/rdvl.h > @@ -3,6 +3,7 @@ > #ifndef RDVL_H > #define RDVL_H > > +int rdvl_sme(void); > int rdvl_sve(void); > > #endif > diff --git a/tools/testing/selftests/arm64/fp/vec-syscfg.c b/tools/testing/selftests/arm64/fp/vec-syscfg.c > index c90658811a83..9bcfcdc34ee9 100644 > --- a/tools/testing/selftests/arm64/fp/vec-syscfg.c > +++ b/tools/testing/selftests/arm64/fp/vec-syscfg.c > @@ -51,6 +51,16 @@ static struct vec_data vec_data[] = { > .prctl_set = PR_SVE_SET_VL, > .default_vl_file = "/proc/sys/abi/sve_default_vector_length", > }, > + { > + .name = "SME", > + .hwcap_type = AT_HWCAP2, > + .hwcap = HWCAP2_SME, > + .rdvl = rdvl_sme, > + .rdvl_binary = "./rdvl-sme", > + .prctl_get = PR_SME_GET_VL, > + .prctl_set = PR_SME_SET_VL, > + .default_vl_file = "/proc/sys/abi/sme_default_vector_length", > + }, > }; > > static int stdio_read_integer(FILE *f, const char *what, int *val) > Looks good to me. Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> thanks, -- Shuah
On Mon, Feb 07, 2022 at 03:21:02PM +0000, Mark Brown wrote: > Provide RDVL helpers for SME and extend the main vector configuration tests > to cover SME. > > Signed-off-by: Mark Brown <broonie@kernel.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
diff --git a/tools/testing/selftests/arm64/fp/.gitignore b/tools/testing/selftests/arm64/fp/.gitignore index c50d86331ed2..6e9a610c5e5d 100644 --- a/tools/testing/selftests/arm64/fp/.gitignore +++ b/tools/testing/selftests/arm64/fp/.gitignore @@ -1,5 +1,6 @@ fp-pidbench fpsimd-test +rdvl-sme rdvl-sve sve-probe-vls sve-ptrace diff --git a/tools/testing/selftests/arm64/fp/Makefile b/tools/testing/selftests/arm64/fp/Makefile index 95f0b877a060..a224fff8082b 100644 --- a/tools/testing/selftests/arm64/fp/Makefile +++ b/tools/testing/selftests/arm64/fp/Makefile @@ -3,7 +3,7 @@ CFLAGS += -I../../../../../usr/include/ TEST_GEN_PROGS := sve-ptrace sve-probe-vls vec-syscfg TEST_PROGS_EXTENDED := fp-pidbench fpsimd-test fpsimd-stress \ - rdvl-sve \ + rdvl-sme rdvl-sve \ sve-test sve-stress \ vlset @@ -13,6 +13,7 @@ fp-pidbench: fp-pidbench.S asm-utils.o $(CC) -nostdlib $^ -o $@ fpsimd-test: fpsimd-test.o asm-utils.o $(CC) -nostdlib $^ -o $@ +rdvl-sme: rdvl-sme.o rdvl.o rdvl-sve: rdvl-sve.o rdvl.o sve-ptrace: sve-ptrace.o sve-probe-vls: sve-probe-vls.o rdvl.o diff --git a/tools/testing/selftests/arm64/fp/rdvl-sme.c b/tools/testing/selftests/arm64/fp/rdvl-sme.c new file mode 100644 index 000000000000..49b0b2e08bac --- /dev/null +++ b/tools/testing/selftests/arm64/fp/rdvl-sme.c @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <stdio.h> + +#include "rdvl.h" + +int main(void) +{ + int vl = rdvl_sme(); + + printf("%d\n", vl); + + return 0; +} diff --git a/tools/testing/selftests/arm64/fp/rdvl.S b/tools/testing/selftests/arm64/fp/rdvl.S index c916c1c9defd..20dc29996dc6 100644 --- a/tools/testing/selftests/arm64/fp/rdvl.S +++ b/tools/testing/selftests/arm64/fp/rdvl.S @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0-only // Copyright (C) 2021 ARM Limited. +#include "sme-inst.h" + .arch_extension sve .globl rdvl_sve @@ -8,3 +10,11 @@ rdvl_sve: hint 34 // BTI C rdvl x0, #1 ret + +.globl rdvl_sme +rdvl_sme: + hint 34 // BTI C + + rdsvl 0, 1 + + ret diff --git a/tools/testing/selftests/arm64/fp/rdvl.h b/tools/testing/selftests/arm64/fp/rdvl.h index 7c9d953fc9e7..5d323679fbc9 100644 --- a/tools/testing/selftests/arm64/fp/rdvl.h +++ b/tools/testing/selftests/arm64/fp/rdvl.h @@ -3,6 +3,7 @@ #ifndef RDVL_H #define RDVL_H +int rdvl_sme(void); int rdvl_sve(void); #endif diff --git a/tools/testing/selftests/arm64/fp/vec-syscfg.c b/tools/testing/selftests/arm64/fp/vec-syscfg.c index c90658811a83..9bcfcdc34ee9 100644 --- a/tools/testing/selftests/arm64/fp/vec-syscfg.c +++ b/tools/testing/selftests/arm64/fp/vec-syscfg.c @@ -51,6 +51,16 @@ static struct vec_data vec_data[] = { .prctl_set = PR_SVE_SET_VL, .default_vl_file = "/proc/sys/abi/sve_default_vector_length", }, + { + .name = "SME", + .hwcap_type = AT_HWCAP2, + .hwcap = HWCAP2_SME, + .rdvl = rdvl_sme, + .rdvl_binary = "./rdvl-sme", + .prctl_get = PR_SME_GET_VL, + .prctl_set = PR_SME_SET_VL, + .default_vl_file = "/proc/sys/abi/sme_default_vector_length", + }, }; static int stdio_read_integer(FILE *f, const char *what, int *val)
Provide RDVL helpers for SME and extend the main vector configuration tests to cover SME. Signed-off-by: Mark Brown <broonie@kernel.org> --- tools/testing/selftests/arm64/fp/.gitignore | 1 + tools/testing/selftests/arm64/fp/Makefile | 3 ++- tools/testing/selftests/arm64/fp/rdvl-sme.c | 14 ++++++++++++++ tools/testing/selftests/arm64/fp/rdvl.S | 10 ++++++++++ tools/testing/selftests/arm64/fp/rdvl.h | 1 + tools/testing/selftests/arm64/fp/vec-syscfg.c | 10 ++++++++++ 6 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/arm64/fp/rdvl-sme.c