s390/fpu: change type of fpu mask from u32 to int
authorHeiko Carstens <hca@linux.ibm.com>
Sat, 3 Feb 2024 10:45:11 +0000 (11:45 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Fri, 16 Feb 2024 13:30:15 +0000 (14:30 +0100)
Change type of fpu mask consistently from u32 to int. This is a
prerequisite to make the kernel fpu usage preemptible. Upcoming code
uses __atomic* ops which work with int pointers.

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/fpu-types.h
arch/s390/include/asm/fpu.h
arch/s390/kernel/fpu.c

index 743858dbc7fbd194a63e55764e3857946ef0c868..fee4468a85d38a52802ae1cbe583800338d0563c 100644 (file)
@@ -24,7 +24,7 @@ struct fpu {
 
 /* In-kernel FPU state structure */
 struct kernel_fpu {
-       u32         mask;
+       int         mask;
        u32         fpc;
        union {
                freg_t fprs[__NUM_FPRS];
index 5d3533569925b47499c22fb1205fd7d931ebd381..447d68fb41b2de67c99dcdab949b072561e01a7a 100644 (file)
@@ -89,8 +89,8 @@ enum {
  *
  * Prefer using the kernel_fpu_begin()/kernel_fpu_end() pair of functions.
  */
-void __kernel_fpu_begin(struct kernel_fpu *state, u32 flags);
-void __kernel_fpu_end(struct kernel_fpu *state, u32 flags);
+void __kernel_fpu_begin(struct kernel_fpu *state, int flags);
+void __kernel_fpu_end(struct kernel_fpu *state, int flags);
 
 static __always_inline void save_vx_regs(__vector128 *vxrs)
 {
@@ -144,7 +144,7 @@ static __always_inline void load_fp_regs(freg_t *fprs)
        fpu_ld(15, &fprs[15]);
 }
 
-static inline void kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
+static inline void kernel_fpu_begin(struct kernel_fpu *state, int flags)
 {
        preempt_disable();
        state->mask = S390_lowcore.fpu_flags;
@@ -158,7 +158,7 @@ static inline void kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
        S390_lowcore.fpu_flags |= flags;
 }
 
-static inline void kernel_fpu_end(struct kernel_fpu *state, u32 flags)
+static inline void kernel_fpu_end(struct kernel_fpu *state, int flags)
 {
        S390_lowcore.fpu_flags = state->mask;
        if (state->mask & flags) {
index 62c9b28090573cf5e95aa4869a4ab39f78a18a2b..b976da5bf71bcc6592462629fe44a14b4448286d 100644 (file)
 #include <linux/sched.h>
 #include <asm/fpu.h>
 
-void __kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
+void __kernel_fpu_begin(struct kernel_fpu *state, int flags)
 {
        __vector128 *vxrs = state->vxrs;
-       u32 mask;
+       int mask;
 
        /*
         * Limit the save to the FPU/vector registers already
@@ -58,10 +58,10 @@ void __kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
 }
 EXPORT_SYMBOL(__kernel_fpu_begin);
 
-void __kernel_fpu_end(struct kernel_fpu *state, u32 flags)
+void __kernel_fpu_end(struct kernel_fpu *state, int flags)
 {
        __vector128 *vxrs = state->vxrs;
-       u32 mask;
+       int mask;
 
        /*
         * Limit the restore to the FPU/vector registers of the