]> git.openfabrics.org - ~emulex/infiniband.git/commit
KVM: PPC: e500mc: Revert "add load inst fixup"
authorMihai Caraman <mihai.caraman@freescale.com>
Wed, 23 Jul 2014 16:06:18 +0000 (19:06 +0300)
committerAlexander Graf <agraf@suse.de>
Mon, 28 Jul 2014 13:23:13 +0000 (15:23 +0200)
commitb5741bb3d4dc751a76f6caaaec8e2b271ff8ca48
treedc75d2508900cb42b32cac84ae2d0c74379cce9a
parent34f754b99e2f642c661967b456764b2c7ccc096e
KVM: PPC: e500mc: Revert "add load inst fixup"

The commit 1d628af7 "add load inst fixup" made an attempt to handle
failures generated by reading the guest current instruction. The fixup
code that was added works by chance hiding the real issue.

Load external pid (lwepx) instruction, used by KVM to read guest
instructions, is executed in a subsituted guest translation context
(EPLC[EGS] = 1). In consequence lwepx's TLB error and data storage
interrupts need to be handled by KVM, even though these interrupts
are generated from host context (MSR[GS] = 0) where lwepx is executed.

Currently, KVM hooks only interrupts generated from guest context
(MSR[GS] = 1), doing minimal checks on the fast path to avoid host
performance degradation. As a result, the host kernel handles lwepx
faults searching the faulting guest data address (loaded in DEAR) in
its own Logical Partition ID (LPID) 0 context. In case a host translation
is found the execution returns to the lwepx instruction instead of the
fixup, the host ending up in an infinite loop.

Revert the commit "add load inst fixup". lwepx issue will be addressed
in a subsequent patch without needing fixup code.

Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/bookehv_interrupts.S