s390/kvm: integrate HANDLE_SIE_INTERCEPT into cleanup_critical
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 22 Jun 2015 15:26:40 +0000 (17:26 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 22 Jul 2015 07:58:03 +0000 (09:58 +0200)
commitd0fc41071a6884d0a10077bb6dc87f9267f32dd6
tree4ba5d560ac969f9bf5a87913781f0bf24936ff37
parentdcd2a9aaa0e0331ba0c4d7a64830788f22f26aa4
s390/kvm: integrate HANDLE_SIE_INTERCEPT into cleanup_critical

Currently there are two mechanisms to deal with cleanup work due to
interrupts. The HANDLE_SIE_INTERCEPT macro is used to undo the changes
required to enter SIE in sie64a. If the SIE instruction causes a program
check, or an asynchronous interrupt is received the HANDLE_SIE_INTERCEPT
code forwards the program execution to sie_exit.

All the other critical sections in entry.S are handled by the code in
cleanup_critical that is called by the SWITCH_ASYNC macro.

Move the sie64a function to the beginning of the critical section and
add the code from HANDLE_SIE_INTERCEPT to cleanup_critical. Add a special
case for the sie64a cleanup to the program check handler.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/entry.S