diff mbox series

kselftest/arm64: Validate SVCR in streaming SVE stress test

Message ID 20230922-arm64-ssve-validate-svcr-v1-1-f518960eaeda@kernel.org
State Accepted
Commit 11a7a42ea76e61a8d2f7374ecdd95460dec4413f
Headers show
Series kselftest/arm64: Validate SVCR in streaming SVE stress test | expand

Commit Message

Mark Brown Sept. 22, 2023, 1:42 p.m. UTC
In the ZA and ZT test programs we explicitly validate that PSTATE.ZA is as
expected on each loop but we do not do the equivalent for our streaming
SVE test, add a check that we are still in streaming mode on every loop
in case that goes wrong.

Signed-off-by: Mark Brown <broonie@kernel.org>
---
 tools/testing/selftests/arm64/fp/sve-test.S | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)


---
base-commit: ce9ecca0238b140b88f43859b211c9fdfd8e5b70
change-id: 20230921-arm64-ssve-validate-svcr-316852554fc8

Best regards,

Comments

Catalin Marinas Sept. 25, 2023, 5:10 p.m. UTC | #1
On Fri, 22 Sep 2023 14:42:55 +0100, Mark Brown wrote:
> In the ZA and ZT test programs we explicitly validate that PSTATE.ZA is as
> expected on each loop but we do not do the equivalent for our streaming
> SVE test, add a check that we are still in streaming mode on every loop
> in case that goes wrong.
> 
> 

Applied to arm64 (for-next/kselftest), thanks!

[1/1] kselftest/arm64: Validate SVCR in streaming SVE stress test
      https://git.kernel.org/arm64/c/11a7a42ea76e
diff mbox series

Patch

diff --git a/tools/testing/selftests/arm64/fp/sve-test.S b/tools/testing/selftests/arm64/fp/sve-test.S
index 4328895dfc87..547d077e3517 100644
--- a/tools/testing/selftests/arm64/fp/sve-test.S
+++ b/tools/testing/selftests/arm64/fp/sve-test.S
@@ -473,6 +473,13 @@  function _start
 //	mov	x8, #__NR_sched_yield	// Encourage preemption
 //	svc	#0
 
+#ifdef SSVE
+	mrs	x0, S3_3_C4_C2_2	// SVCR should have ZA=0,SM=1
+	and	x1, x0, #3
+	cmp	x1, #1
+	b.ne	svcr_barf
+#endif
+
 	mov	x21, #0
 0:	mov	x0, x21
 	bl	check_zreg
@@ -553,3 +560,15 @@  function vl_barf
 	mov	x1, #1
 	svc	#0
 endfunction
+
+function svcr_barf
+	mov	x10, x0
+
+	puts	"Bad SVCR: "
+	mov	x0, x10
+	bl	putdecn
+
+	mov	x8, #__NR_exit
+	mov	x1, #1
+	svc	#0
+endfunction