s390/fpu: remove ARCH_WANTS_DYNAMIC_TASK_STRUCT support
authorHeiko Carstens <hca@linux.ibm.com>
Fri, 1 Dec 2023 14:42:16 +0000 (15:42 +0100)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Mon, 11 Dec 2023 13:33:06 +0000 (14:33 +0100)
s390 selects ARCH_WANTS_DYNAMIC_TASK_STRUCT in order to make the size of
the task structure dependent on the availability of the vector
facility. This doesn't make sense anymore because since many years all
machines provide the vector facility.

Therefore simplify the code a bit and remove s390 support for
ARCH_WANTS_DYNAMIC_TASK_STRUCT.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/Kconfig
arch/s390/include/asm/processor.h
arch/s390/kernel/process.c
arch/s390/kernel/setup.c

index 3bec98d20283b4eee33f946111ed35e3f8897bff..b5dbac684bbd50bb48ab779946a9f9c0ffb60ef9 100644 (file)
@@ -123,7 +123,6 @@ config S390
        select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_CMPXCHG_LOCKREF
        select ARCH_USE_SYM_ANNOTATIONS
-       select ARCH_WANTS_DYNAMIC_TASK_STRUCT
        select ARCH_WANTS_NO_INSTR
        select ARCH_WANT_DEFAULT_BPF_JIT
        select ARCH_WANT_IPC_PARSE_VERSION
index 0b625373a255e28a8be715e39b146b86507f5723..92146d63c25e90d62c1befc334d8536284eb0242 100644 (file)
@@ -184,11 +184,7 @@ struct thread_struct {
        struct gs_cb *gs_cb;                    /* Current guarded storage cb */
        struct gs_cb *gs_bc_cb;                 /* Broadcast guarded storage cb */
        struct pgm_tdb trap_tdb;                /* Transaction abort diagnose block */
-       /*
-        * Warning: 'fpu' is dynamically-sized. It *MUST* be at
-        * the end.
-        */
-       struct fpu fpu;                 /* FP and VX register save area */
+       struct fpu fpu;                         /* FP and VX register save area */
 };
 
 /* Flag to disable transactions. */
index 2580004177248b2dd3bf549149416eaf60d8b8d3..4e3b366589fb6a7484b866faf786dc976dbbffa3 100644 (file)
@@ -89,7 +89,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
         */
        save_fpu_regs();
 
-       memcpy(dst, src, arch_task_struct_size);
+       *dst = *src;
        dst->thread.fpu.regs = dst->thread.fpu.fprs;
 
        /*
index c0e7cfdd7747697d9fccd391c0f1b3d779c38bab..d1f3b56e7afc2b9b6326451ae446c73a9c1ce1c7 100644 (file)
@@ -819,22 +819,6 @@ static void __init setup_randomness(void)
                static_branch_enable(&s390_arch_random_available);
 }
 
-/*
- * Find the correct size for the task_struct. This depends on
- * the size of the struct fpu at the end of the thread_struct
- * which is embedded in the task_struct.
- */
-static void __init setup_task_size(void)
-{
-       int task_size = sizeof(struct task_struct);
-
-       if (!MACHINE_HAS_VX) {
-               task_size -= sizeof(__vector128) * __NUM_VXRS;
-               task_size += sizeof(freg_t) * __NUM_FPRS;
-       }
-       arch_task_struct_size = task_size;
-}
-
 /*
  * Issue diagnose 318 to set the control program name and
  * version codes.
@@ -927,7 +911,6 @@ void __init setup_arch(char **cmdline_p)
 
        os_info_init();
        setup_ipl();
-       setup_task_size();
        setup_control_program_code();
 
        /* Do some memory reservations *before* memory is added to memblock */