• Martin Schwidefsky's avatar
    s390/kvm: fix interrupt race with HANDLE_SIE_INTERCEPT · dcd2a9aa
    Martin Schwidefsky authored
    The HANDLE_SIE_INTERCEPT macro is used in the interrupt handlers
    and the program check handler to undo a few changes done by sie64a.
    Among them are guest vs host LPP, the gmap ASCE vs kernel ASCE and
    the bit that indicates that SIE is currently running on the CPU.
    
    There is a race of a voluntary SIE exit vs asynchronous interrupts.
    If the CPU completed the SIE instruction and the TM instruction of
    the LPP macro at the time it receives an interrupt, the interrupt
    handler will run while the LPP, the ASCE and the SIE bit are still
    set up for guest execution. This might result in wrong sampling data,
    but it will not cause data corruption or lockups.
    
    The critical section in sie64a needs to be enlarged to include all
    instructions that undo the changes required for guest execution.
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    dcd2a9aa
entry.S 36.4 KB