From 9cbff7f2214d16af5c10f1f55ac72d4c1a8bd787 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Sat, 3 Feb 2024 11:45:14 +0100 Subject: s390/fpu: remove regs member from struct fpu KVM was the only user which modified the regs pointer in struct fpu. Remove the pointer and convert the rest of the core fpu code to directly access the save area embedded within struct fpu. Reviewed-by: Claudio Imbrenda Signed-off-by: Heiko Carstens --- arch/s390/include/asm/fpu-types.h | 1 - arch/s390/include/asm/processor.h | 1 - arch/s390/kernel/fpu.c | 11 ++++------- arch/s390/kernel/process.c | 1 - 4 files changed, 4 insertions(+), 10 deletions(-) (limited to 'arch') diff --git a/arch/s390/include/asm/fpu-types.h b/arch/s390/include/asm/fpu-types.h index fee4468a85d3..f5b6fab30401 100644 --- a/arch/s390/include/asm/fpu-types.h +++ b/arch/s390/include/asm/fpu-types.h @@ -13,7 +13,6 @@ struct fpu { __u32 fpc; /* Floating-point control */ - void *regs; /* Pointer to the current save area */ union { /* Floating-point register save area */ freg_t fprs[__NUM_FPRS]; diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index eee0a1eec620..ecce58abf3db 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h @@ -202,7 +202,6 @@ typedef struct thread_struct thread_struct; #define INIT_THREAD { \ .ksp = sizeof(init_stack) + (unsigned long) &init_stack, \ - .ufpu.regs = (void *)init_task.thread.ufpu.fprs, \ .last_break = 1, \ } diff --git a/arch/s390/kernel/fpu.c b/arch/s390/kernel/fpu.c index b976da5bf71b..a0ef3fc5d90f 100644 --- a/arch/s390/kernel/fpu.c +++ b/arch/s390/kernel/fpu.c @@ -110,13 +110,12 @@ EXPORT_SYMBOL(__kernel_fpu_end); void __load_user_fpu_regs(void) { struct fpu *state = ¤t->thread.ufpu; - void *regs = current->thread.ufpu.regs; fpu_lfpc_safe(&state->fpc); if (likely(cpu_has_vx())) - load_vx_regs(regs); + load_vx_regs(state->vxrs); else - load_fp_regs(regs); + load_fp_regs(state->fprs); clear_thread_flag(TIF_FPU); } @@ -132,7 +131,6 @@ void save_user_fpu_regs(void) { unsigned long flags; struct fpu *state; - void *regs; local_irq_save(flags); @@ -140,13 +138,12 @@ void save_user_fpu_regs(void) goto out; state = ¤t->thread.ufpu; - regs = current->thread.ufpu.regs; fpu_stfpc(&state->fpc); if (likely(cpu_has_vx())) - save_vx_regs(regs); + save_vx_regs(state->vxrs); else - save_fp_regs(regs); + save_fp_regs(state->fprs); set_thread_flag(TIF_FPU); out: local_irq_restore(flags); diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index b7b623818753..dd456b475861 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -94,7 +94,6 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) save_user_fpu_regs(); *dst = *src; - dst->thread.ufpu.regs = dst->thread.ufpu.fprs; dst->thread.kfpu_flags = 0; /* -- cgit