OSDN Git Service

s390/mcck: cleanup use of cleanup_sie_mcck
authorAlexander Gordeev <agordeev@linux.ibm.com>
Mon, 17 May 2021 06:18:13 +0000 (08:18 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 7 Jun 2021 15:12:59 +0000 (17:12 +0200)
cleanup_sie_mcck label is called from a single location only
and thus does not need to be a subroutine. Move the labelled
code to the caller - by doing that the SIE critical section
checks appear next to each other and the SIE cleanup becomes
bit more readable.

Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/entry.S

index a070a5d..7cfa08b 100644 (file)
@@ -214,7 +214,7 @@ ENTRY(sie64a)
 # are some corner cases (e.g. runtime instrumentation) where ILC is unpredictable.
 # Other instructions between sie64a and .Lsie_done should not cause program
 # interrupts. So lets use 3 nops as a landing pad for all possible rewinds.
-# See also .Lcleanup_sie_mcck/.Lcleanup_sie_int
+# See also .Lcleanup_sie
 .Lrewind_pad6:
        nopr    7
 .Lrewind_pad4:
@@ -399,7 +399,7 @@ ENTRY(\name)
        lghi    %r13,.Lsie_done - .Lsie_gmap
        clgr    %r14,%r13
        jhe     0f
-       brasl   %r14,.Lcleanup_sie_int
+       brasl   %r14,.Lcleanup_sie
 #endif
 0:     CHECK_STACK __LC_SAVE_AREA_ASYNC
        aghi    %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE)
@@ -547,7 +547,13 @@ ENTRY(mcck_int_handler)
        lghi    %r13,.Lsie_done - .Lsie_gmap
        clgr    %r14,%r13
        jhe     .Lmcck_stack
-       brasl   %r14,.Lcleanup_sie_mcck
+       larl    %r13,.Lsie_entry
+       slgr    %r9,%r13
+       lghi    %r13,.Lsie_skip - .Lsie_entry
+       clgr    %r9,%r13
+       jhe     5f
+       oi      __LC_CPU_FLAGS+7, _CIF_MCCK_GUEST
+5:     brasl   %r14,.Lcleanup_sie
 #endif
        j       .Lmcck_stack
 .Lmcck_user:
@@ -649,21 +655,13 @@ ENDPROC(stack_overflow)
 #endif
 
 #if IS_ENABLED(CONFIG_KVM)
-.Lcleanup_sie_mcck:
-       larl    %r13,.Lsie_entry
-       slgr    %r9,%r13
-       lghi    %r13,.Lsie_skip - .Lsie_entry
-       clgr    %r9,%r13
-       jhe     .Lcleanup_sie_int
-       oi      __LC_CPU_FLAGS+7, _CIF_MCCK_GUEST
-.Lcleanup_sie_int:
+.Lcleanup_sie:
        BPENTER __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
        lg      %r9,__SF_SIE_CONTROL(%r15)      # get control block pointer
        ni      __SIE_PROG0C+3(%r9),0xfe        # no longer in SIE
        lctlg   %c1,%c1,__LC_KERNEL_ASCE
        larl    %r9,sie_exit                    # skip forward to sie_exit
        BR_EX   %r14,%r13
-
 #endif
        .section .rodata, "a"
 #define SYSCALL(esame,emu)     .quad __s390x_ ## esame