KVM: PPC: Fix emulated MMIO sign-extension
authorPaul Mackerras <paulus@ozlabs.org>
Thu, 5 May 2016 06:17:10 +0000 (16:17 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 11 May 2016 11:19:10 +0000 (21:19 +1000)
commiteb8b0560160d8363bc40ca05a75ef144cebaae72
tree6f550cfc3b32b335984bbd7f8ed6760ff799364b
parentade3ac660a1813344bcf4fe58b9ac5fbe7c0ed4b
KVM: PPC: Fix emulated MMIO sign-extension

When the guest does a sign-extending load instruction (such as lha
or lwa) to an emulated MMIO location, it results in a call to
kvmppc_handle_loads() in the host.  That function sets the
vcpu->arch.mmio_sign_extend flag and calls kvmppc_handle_load()
to do the rest of the work.  However, kvmppc_handle_load() sets
the mmio_sign_extend flag to 0 unconditionally, so the sign
extension never gets done.

To fix this, we rename kvmppc_handle_load to __kvmppc_handle_load
and add an explicit parameter to indicate whether sign extension
is required.  kvmppc_handle_load() and kvmppc_handle_loads() then
become 1-line functions that just call __kvmppc_handle_load()
with the extra parameter.

Reported-by: Bin Lu <lblulb@linux.vnet.ibm.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kvm/powerpc.c