Commit d65f27d2 authored by Mark Brown's avatar Mark Brown Committed by Catalin Marinas
Browse files

kselftest/arm64: Implement irritators for ZA and ZT



Currently we don't use the irritator signal in our floating point stress
tests so when we added ZA and ZT stress tests we didn't actually bother
implementing any actual action in the handlers, we just counted the signal
deliveries. In preparation for using the irritators let's implement them,
just trivially SMSTOP and SMSTART to reset all bits in the register to 0.

Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20241107-arm64-fp-stress-irritator-v2-4-c4b9622e36ee@kernel.org


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent ffca567f
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -148,20 +148,16 @@ function check_za
	b	memcmp
endfunction

// Any SME register modified here can cause corruption in the main
// thread -- but *only* the locations modified here.
// Modify the live SME register state, signal return will undo our changes
function irritator_handler
	// Increment the irritation signal count (x23):
	ldr	x0, [x2, #ucontext_regs + 8 * 23]
	add	x0, x0, #1
	str	x0, [x2, #ucontext_regs + 8 * 23]

	// Corrupt some random ZA data
#if 0
	movi	v0.8b, #1
	movi	v9.16b, #2
	movi	v31.8b, #3
#endif
	// This will reset ZA to all bits 0
	smstop
	smstart

	ret
endfunction
+4 −8
Original line number Diff line number Diff line
@@ -117,20 +117,16 @@ function check_zt
	b	memcmp
endfunction

// Any SME register modified here can cause corruption in the main
// thread -- but *only* the locations modified here.
// Modify the live SME register state, signal return will undo our changes
function irritator_handler
	// Increment the irritation signal count (x23):
	ldr	x0, [x2, #ucontext_regs + 8 * 23]
	add	x0, x0, #1
	str	x0, [x2, #ucontext_regs + 8 * 23]

	// Corrupt some random ZT data
#if 0
	movi	v0.8b, #1
	movi	v9.16b, #2
	movi	v31.8b, #3
#endif
	// This will reset ZT to all bits 0
	smstop
	smstart

	ret
endfunction