diff mbox series

[v11,33/40] kselftest/arm64: Extend vector configuration API tests to cover SME

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

Commit Message

Mark Brown Feb. 7, 2022, 3:21 p.m. UTC
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

Comments

Shuah Khan Feb. 8, 2022, 12:24 a.m. UTC | #1
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
Catalin Marinas Feb. 23, 2022, 3:43 p.m. UTC | #2
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 mbox series

Patch

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)