lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 135/339] s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag
    Date
    From: Alexander Gordeev <agordeev@linux.ibm.com>

    [ Upstream commit 29ccaa4b35ea874ddd50518e5c2c746b9238a792 ]

    Commit d768bd892fc8 ("s390: add options to change branch prediction
    behaviour for the kernel") introduced .Lsie_exit label - supposedly
    to fence off SIE instruction. However, the corresponding address
    range length .Lsie_crit_mcck_length was not updated, which led to
    BPON code potentionally marked with CIF_MCCK_GUEST flag.

    Both .Lsie_exit and .Lsie_crit_mcck_length were removed with commit
    0b0ed657fe00 ("s390: remove critical section cleanup from entry.S"),
    but the issue persisted - currently BPOFF and BPENTER macros might
    get wrongly considered by the machine check handler as a guest.

    Fixes: d768bd892fc8 ("s390: add options to change branch prediction behaviour for the kernel")
    Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/s390/kernel/entry.S | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
    index 59b69c8ab5e1..85e9703e52a8 100644
    --- a/arch/s390/kernel/entry.S
    +++ b/arch/s390/kernel/entry.S
    @@ -258,6 +258,10 @@ ENTRY(sie64a)
    BPEXIT __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
    .Lsie_entry:
    sie 0(%r14)
    +# Let the next instruction be NOP to avoid triggering a machine check
    +# and handling it in a guest as result of the instruction execution.
    + nopr 7
    +.Lsie_leave:
    BPOFF
    BPENTER __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
    .Lsie_skip:
    @@ -557,7 +561,7 @@ ENTRY(mcck_int_handler)
    jno .Lmcck_panic
    #if IS_ENABLED(CONFIG_KVM)
    OUTSIDE %r9,.Lsie_gmap,.Lsie_done,6f
    - OUTSIDE %r9,.Lsie_entry,.Lsie_skip,4f
    + OUTSIDE %r9,.Lsie_entry,.Lsie_leave,4f
    oi __LC_CPU_FLAGS+7, _CIF_MCCK_GUEST
    j 5f
    4: CHKSTG .Lmcck_panic
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 15:48    [W:4.045 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site