From b6b842becd734301349b2fbe8d31099ea3d22a0f Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Sat, 3 Feb 2024 11:45:00 +0100 Subject: [PATCH] s390/fpu: use KERNEL_VXR_LOW instead of KERNEL_VXR_V0V7 Use KERNEL_VXR_LOW instead of KERNEL_VXR_V0V7 for configurations without vector registers in order to decide if floating point registers need to be saved and restored. Kernel FPU areas which use floating point registers are supposed to use the KERNEL_FPR mask, however users may also open-code this and specify KERNEL_VXR_V0V7 and/or KERNEL_VXR_V8V15. If only KERNEL_VXR_V8V15 is specified floating point registers wouldn't be saved and restored. Improve this and check for both bits. There are currently no users where this would fix a bug. Reviewed-by: Claudio Imbrenda Signed-off-by: Heiko Carstens --- arch/s390/kernel/fpu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/s390/kernel/fpu.c b/arch/s390/kernel/fpu.c index a4f3449cc8141..21c9885cfb211 100644 --- a/arch/s390/kernel/fpu.c +++ b/arch/s390/kernel/fpu.c @@ -25,7 +25,7 @@ void __kernel_fpu_begin(struct kernel_fpu *state, u32 flags) asm volatile("stfpc %0" : "=Q" (state->fpc)); if (!cpu_has_vx()) { - if (flags & KERNEL_VXR_V0V7) { + if (flags & KERNEL_VXR_LOW) { /* Save floating-point registers */ asm volatile("std 0,%0" : "=Q" (state->fprs[0])); asm volatile("std 1,%0" : "=Q" (state->fprs[1])); @@ -107,7 +107,7 @@ void __kernel_fpu_end(struct kernel_fpu *state, u32 flags) asm volatile("lfpc %0" : : "Q" (state->fpc)); if (!cpu_has_vx()) { - if (flags & KERNEL_VXR_V0V7) { + if (flags & KERNEL_VXR_LOW) { /* Restore floating-point registers */ asm volatile("ld 0,%0" : : "Q" (state->fprs[0])); asm volatile("ld 1,%0" : : "Q" (state->fprs[1])); -- 2.30.2