s390/stack: merge empty stack frame slots
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 30 May 2022 12:09:24 +0000 (14:09 +0200)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 1 Jun 2022 10:03:17 +0000 (12:03 +0200)
Merge empty1 and empty2 arrays within the stack frame to one single
array. This is possible since with commit 42b01a553a56 ("s390: always
use the packed stack layout") the alternative stack frame layout is
gone.

Reviewed-by: Nico Boehr <nrb@linux.ibm.com>
Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/stacktrace.h
arch/s390/kernel/asm-offsets.c
arch/s390/kernel/perf_event.c

index f850019..7e0e15b 100644 (file)
@@ -39,8 +39,7 @@ static inline bool on_stack(struct stack_info *info,
  * Kernel uses the packed stack layout (-mpacked-stack).
  */
 struct stack_frame {
-       unsigned long empty1[5];
-       unsigned int  empty2[8];
+       unsigned long empty[9];
        unsigned long gprs[10];
        unsigned long back_chain;
 };
index 1e37cad..0e10d7f 100644 (file)
@@ -57,11 +57,11 @@ int main(void)
        /* stack_frame offsets */
        OFFSET(__SF_BACKCHAIN, stack_frame, back_chain);
        OFFSET(__SF_GPRS, stack_frame, gprs);
-       OFFSET(__SF_EMPTY, stack_frame, empty1[0]);
-       OFFSET(__SF_SIE_CONTROL, stack_frame, empty1[1]);
-       OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty1[2]);
-       OFFSET(__SF_SIE_REASON, stack_frame, empty1[3]);
-       OFFSET(__SF_SIE_FLAGS, stack_frame, empty1[4]);
+       OFFSET(__SF_EMPTY, stack_frame, empty[0]);
+       OFFSET(__SF_SIE_CONTROL, stack_frame, empty[1]);
+       OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty[2]);
+       OFFSET(__SF_SIE_REASON, stack_frame, empty[3]);
+       OFFSET(__SF_SIE_FLAGS, stack_frame, empty[4]);
        DEFINE(STACK_FRAME_OVERHEAD, sizeof(struct stack_frame));
        BLANK();
        /* idle data offsets */
index a7f8db7..e259ff1 100644 (file)
@@ -30,7 +30,7 @@ static struct kvm_s390_sie_block *sie_block(struct pt_regs *regs)
        if (!stack)
                return NULL;
 
-       return (struct kvm_s390_sie_block *)stack->empty1[1];
+       return (struct kvm_s390_sie_block *)stack->empty[1];
 }
 
 static bool is_in_guest(struct pt_regs *regs)