mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-23 02:09:31 +07:00
s390/fpu: add static FPU save area for init_task
Previously, the init task did not have an allocated FPU save area and saving an FPU state was not possible. Now if the vector extension is always enabled, provide a static FPU save area to save FPU states of vector instructions that can be executed quite early. Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
b5510d9b68
commit
0ac277790e
@ -139,8 +139,10 @@ struct stack_frame {
|
||||
|
||||
#define ARCH_MIN_TASKALIGN 8
|
||||
|
||||
extern __vector128 init_task_fpu_regs[__NUM_VXRS];
|
||||
#define INIT_THREAD { \
|
||||
.ksp = sizeof(init_stack) + (unsigned long) &init_stack, \
|
||||
.fpu.regs = (void *)&init_task_fpu_regs, \
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -762,8 +762,6 @@ ENTRY(save_fpu_regs)
|
||||
stfpc __THREAD_FPU_fpc(%r2)
|
||||
.Lsave_fpu_regs_fpc_end:
|
||||
lg %r3,__THREAD_FPU_regs(%r2)
|
||||
ltgr %r3,%r3
|
||||
jz .Lsave_fpu_regs_done # no save area -> set CIF_FPU
|
||||
tm __LC_MACHINE_FLAGS+5,4 # MACHINE_HAS_VX
|
||||
jz .Lsave_fpu_regs_fp # no -> store FP regs
|
||||
.Lsave_fpu_regs_vx_low:
|
||||
@ -1193,8 +1191,6 @@ cleanup_critical:
|
||||
stfpc __THREAD_FPU_fpc(%r2)
|
||||
1: # Load register save area and check if VX is active
|
||||
lg %r3,__THREAD_FPU_regs(%r2)
|
||||
ltgr %r3,%r3
|
||||
jz 5f # no save area -> set CIF_FPU
|
||||
tm __LC_MACHINE_FLAGS+5,4 # MACHINE_HAS_VX
|
||||
jz 4f # no VX -> store FP regs
|
||||
2: # Store vector registers (V0-V15)
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/random.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init_task.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/vtimer.h>
|
||||
@ -36,6 +37,9 @@
|
||||
|
||||
asmlinkage void ret_from_fork(void) asm ("ret_from_fork");
|
||||
|
||||
/* FPU save area for the init task */
|
||||
__vector128 init_task_fpu_regs[__NUM_VXRS] __init_task_data;
|
||||
|
||||
/*
|
||||
* Return saved PC of a blocked thread. used in kernel/sched.
|
||||
* resume in entry.S does not create a new stack frame, it
|
||||
|
Loading…
Reference in New Issue
Block a user