Skip to content

Commit 0001b7b

Browse files
svens-s390Vasily Gorbik
authored andcommitted
s390/entry: Make mchk_int_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in mcck_int_handler(). Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
1 parent bd2c55b commit 0001b7b

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

arch/s390/kernel/entry.S

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -455,33 +455,34 @@ INT_HANDLER io_int_handler,__LC_IO_OLD_PSW,do_io_irq
455455
*/
456456
SYM_CODE_START(mcck_int_handler)
457457
BPOFF
458-
lmg %r8,%r9,__LC_MCK_OLD_PSW
459-
TSTMSK __LC_MCCK_CODE,MCCK_CODE_SYSTEM_DAMAGE
458+
GET_LC %r13
459+
lmg %r8,%r9,__LC_MCK_OLD_PSW(%r13)
460+
TSTMSK __LC_MCCK_CODE(%r13),MCCK_CODE_SYSTEM_DAMAGE
460461
jo .Lmcck_panic # yes -> rest of mcck code invalid
461-
TSTMSK __LC_MCCK_CODE,MCCK_CODE_CR_VALID
462+
TSTMSK __LC_MCCK_CODE(%r13),MCCK_CODE_CR_VALID
462463
jno .Lmcck_panic # control registers invalid -> panic
463464
ptlb
464-
lghi %r14,__LC_CPU_TIMER_SAVE_AREA
465-
mvc __LC_MCCK_ENTER_TIMER(8),0(%r14)
466-
TSTMSK __LC_MCCK_CODE,MCCK_CODE_CPU_TIMER_VALID
465+
lay %r14,__LC_CPU_TIMER_SAVE_AREA(%r13)
466+
mvc __LC_MCCK_ENTER_TIMER(8,%r13),0(%r14)
467+
TSTMSK __LC_MCCK_CODE(%r13),MCCK_CODE_CPU_TIMER_VALID
467468
jo 3f
468-
la %r14,__LC_SYS_ENTER_TIMER
469-
clc 0(8,%r14),__LC_EXIT_TIMER
469+
la %r14,__LC_SYS_ENTER_TIMER(%r13)
470+
clc 0(8,%r14),__LC_EXIT_TIMER(%r13)
470471
jl 1f
471-
la %r14,__LC_EXIT_TIMER
472-
1: clc 0(8,%r14),__LC_LAST_UPDATE_TIMER
472+
la %r14,__LC_EXIT_TIMER(%r13)
473+
1: clc 0(8,%r14),__LC_LAST_UPDATE_TIMER(%r13)
473474
jl 2f
474-
la %r14,__LC_LAST_UPDATE_TIMER
475+
la %r14,__LC_LAST_UPDATE_TIMER(%r13)
475476
2: spt 0(%r14)
476-
mvc __LC_MCCK_ENTER_TIMER(8),0(%r14)
477-
3: TSTMSK __LC_MCCK_CODE,MCCK_CODE_PSW_MWP_VALID
477+
mvc __LC_MCCK_ENTER_TIMER(8,%r13),0(%r14)
478+
3: TSTMSK __LC_MCCK_CODE(%r13),MCCK_CODE_PSW_MWP_VALID
478479
jno .Lmcck_panic
479480
tmhh %r8,0x0001 # interrupting from user ?
480481
jnz .Lmcck_user
481-
TSTMSK __LC_MCCK_CODE,MCCK_CODE_PSW_IA_VALID
482+
TSTMSK __LC_MCCK_CODE(%r13),MCCK_CODE_PSW_IA_VALID
482483
jno .Lmcck_panic
483484
#if IS_ENABLED(CONFIG_KVM)
484-
lg %r10,__LC_CURRENT
485+
lg %r10,__LC_CURRENT(%r13)
485486
tm __TI_sie(%r10),0xff
486487
jz .Lmcck_user
487488
# Need to compare the address instead of __TI_SIE flag.
@@ -496,15 +497,15 @@ SYM_CODE_START(mcck_int_handler)
496497
lg %r10,__LC_PCPU
497498
oi __PCPU_FLAGS+7(%r10), _CIF_MCCK_GUEST
498499
4: BPENTER __SF_SIE_FLAGS(%r15),_TIF_ISOLATE_BP_GUEST
499-
SIEEXIT __SF_SIE_CONTROL(%r15),%r0
500+
SIEEXIT __SF_SIE_CONTROL(%r15),%r13
500501
#endif
501502
.Lmcck_user:
502-
lg %r15,__LC_MCCK_STACK
503+
lg %r15,__LC_MCCK_STACK(%r13)
503504
la %r11,STACK_FRAME_OVERHEAD(%r15)
504505
stctg %c1,%c1,__PT_CR1(%r11)
505-
lctlg %c1,%c1,__LC_KERNEL_ASCE
506+
lctlg %c1,%c1,__LC_KERNEL_ASCE(%r13)
506507
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
507-
lghi %r14,__LC_GPREGS_SAVE_AREA
508+
lay %r14,__LC_GPREGS_SAVE_AREA(%r13)
508509
mvc __PT_R0(128,%r11),0(%r14)
509510
# clear user controlled registers to prevent speculative use
510511
xgr %r0,%r0
@@ -522,12 +523,13 @@ SYM_CODE_START(mcck_int_handler)
522523
brasl %r14,s390_do_machine_check
523524
lctlg %c1,%c1,__PT_CR1(%r11)
524525
lmg %r0,%r10,__PT_R0(%r11)
525-
mvc __LC_RETURN_MCCK_PSW(16),__PT_PSW(%r11) # move return PSW
526-
tm __LC_RETURN_MCCK_PSW+1,0x01 # returning to user ?
526+
mvc __LC_RETURN_MCCK_PSW(16,%r13),__PT_PSW(%r11) # move return PSW
527+
tm __LC_RETURN_MCCK_PSW+1(%r13),0x01 # returning to user ?
527528
jno 0f
528529
BPON
529-
stpt __LC_EXIT_TIMER
530-
0: ALTERNATIVE "nop", __stringify(lghi %r12,__LC_LAST_BREAK_SAVE_AREA), ALT_FACILITY(193)
530+
stpt __LC_EXIT_TIMER(%r13)
531+
0: ALTERNATIVE "brcl 0,0", __stringify(lay %r12,__LC_LAST_BREAK_SAVE_AREA(%r13)),\
532+
ALT_FACILITY(193)
531533
LBEAR 0(%r12)
532534
lmg %r11,%r15,__PT_R11(%r11)
533535
LPSWEY __LC_RETURN_MCCK_PSW,__LC_RETURN_MCCK_LPSWE

0 commit comments

Comments
 (0)