Paul Mackerras
8b23de2948
KVM: PPC: Book3S PR: Make instruction fetch fallback work for system calls
...
It turns out that if we exit the guest due to a hcall instruction (sc 1),
and the loading of the instruction in the guest exit path fails for any
reason, the call to kvmppc_ld() in kvmppc_get_last_inst() fetches the
instruction after the hcall instruction rather than the hcall itself.
This in turn means that the instruction doesn't get recognized as an
hcall in kvmppc_handle_exit_pr() but gets passed to the guest kernel
as a sc instruction. That usually results in the guest kernel getting
a return code of 38 (ENOSYS) from an hcall, which often triggers a
BUG_ON() or other failure.
This fixes the problem by adding a new variant of kvmppc_get_last_inst()
called kvmppc_get_last_sc(), which fetches the instruction if necessary
from pc - 4 rather than pc.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2013-08-28 16:47:49 +02:00
..
alpha
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-07-03 09:10:19 -07:00
arc
ARC changes for 3.11
2013-07-03 11:09:27 -07:00
arm
Merge remote-tracking branch 'cmadma/for-v3.12-cma-dma' into kvm-ppc-next
2013-07-08 16:16:56 +02:00
arm64
arm64: KVM: Kconfig integration
2013-07-04 14:40:26 +02:00
avr32
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
blackfin
Driver core patches for 3.11-rc1
2013-07-02 11:44:19 -07:00
c6x
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
cris
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
frv
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
h8300
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
hexagon
ia64
KVM fixes for 3.11
2013-07-03 13:21:40 -07:00
m32r
Merge branch 'sched-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:19:24 -07:00
m68k
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
metag
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:15:23 -07:00
microblaze
Merge branch 'sched-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:19:24 -07:00
mips
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:17:25 -07:00
mn10300
Merge branch 'sched-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:19:24 -07:00
openrisc
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
parisc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-07-03 09:10:19 -07:00
powerpc
KVM: PPC: Book3S PR: Make instruction fetch fallback work for system calls
2013-08-28 16:47:49 +02:00
s390
KVM fixes for 3.11
2013-07-03 13:21:40 -07:00
score
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
sh
Merge branch 'core-mutexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:09:13 -07:00
sparc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-07-03 09:10:19 -07:00
tile
Merge branch 'sched-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:19:24 -07:00
um
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-07-02 16:17:25 -07:00
unicore32
Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
2013-07-03 11:12:08 -07:00
x86
KVM: VMX: mark unusable segment as nonpresent
2013-07-04 14:40:36 +02:00
xtensa
.gitignore
Kconfig