diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-10-27 23:32:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-10-27 23:32:24 -0400 |
commit | fe23429e6bfec817abcf316f4782aed8426ea745 (patch) | |
tree | 097c9cb40381934d674d05927b95f15cb5d7d629 | |
parent | d3eab75a7fdd32b4b9c342a07be3525c4d31a41a (diff) | |
parent | 0a5e2ec2647737907d267c09dc9a25fab1468865 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fix from Martin Schwidefsky:
"A fix for a regression in regard to machine check handling in KVM.
Keeping my fingers crossed that this is the last s390 fix for v4.14"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390/kvm: fix detection of guest machine checks
-rw-r--r-- | arch/s390/kernel/entry.S | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 21900e1cee9c..d185aa3965bf 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -521,12 +521,15 @@ ENTRY(pgm_check_handler) | |||
521 | tmhh %r8,0x0001 # test problem state bit | 521 | tmhh %r8,0x0001 # test problem state bit |
522 | jnz 2f # -> fault in user space | 522 | jnz 2f # -> fault in user space |
523 | #if IS_ENABLED(CONFIG_KVM) | 523 | #if IS_ENABLED(CONFIG_KVM) |
524 | # cleanup critical section for sie64a | 524 | # cleanup critical section for program checks in sie64a |
525 | lgr %r14,%r9 | 525 | lgr %r14,%r9 |
526 | slg %r14,BASED(.Lsie_critical_start) | 526 | slg %r14,BASED(.Lsie_critical_start) |
527 | clg %r14,BASED(.Lsie_critical_length) | 527 | clg %r14,BASED(.Lsie_critical_length) |
528 | jhe 0f | 528 | jhe 0f |
529 | brasl %r14,.Lcleanup_sie | 529 | lg %r14,__SF_EMPTY(%r15) # get control block pointer |
530 | ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE | ||
531 | lctlg %c1,%c1,__LC_USER_ASCE # load primary asce | ||
532 | larl %r9,sie_exit # skip forward to sie_exit | ||
530 | #endif | 533 | #endif |
531 | 0: tmhh %r8,0x4000 # PER bit set in old PSW ? | 534 | 0: tmhh %r8,0x4000 # PER bit set in old PSW ? |
532 | jnz 1f # -> enabled, can't be a double fault | 535 | jnz 1f # -> enabled, can't be a double fault |