[S390] kvm: fix address mode switching
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 20 Sep 2011 15:07:28 +0000 (17:07 +0200)
committerHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 20 Sep 2011 15:07:34 +0000 (17:07 +0200)
commit480e5926ce3bb61ec229be2dab08bdce8abb8d2e
treeb252230da3bba55a8e4ebd747767257c781670d7
parent9d037a777695993ec7437e5f451647dea7919d4c
[S390] kvm: fix address mode switching

598841ca9919d008b520114d8a4378c4ce4e40a1 ([S390] use gmap address
spaces for kvm guest images) changed kvm to use a separate address
space for kvm guests. This address space was switched in __vcpu_run
In some cases (preemption, page fault) there is the possibility that
this address space switch is lost.
The typical symptom was a huge amount of validity intercepts or
random guest addressing exceptions.
Fix this by doing the switch in sie_loop and sie_exit and saving the
address space in the gmap structure itself. Also use the preempt
notifier.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
arch/s390/include/asm/pgtable.h
arch/s390/kernel/asm-offsets.c
arch/s390/kernel/entry64.S
arch/s390/kvm/kvm-s390.c
arch/s390/mm/pgtable.c