MIPS: KVM: Restore host EBase from ebase variable
authorJames Hogan <james.hogan@imgtec.com>
Thu, 9 Jun 2016 13:19:14 +0000 (14:19 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 14 Jun 2016 09:02:44 +0000 (11:02 +0200)
commit878edf014e29de38c49153aba20273fbc9ae31af
tree0ea5871f8a035389da5aa423e72a0a58f2033473
parent26ee17ff71d3def831bfa4f6851ed1ba789e24f6
MIPS: KVM: Restore host EBase from ebase variable

The host kernel's exception vector base address is currently saved in
the VCPU structure at creation time, and restored on a guest exit.
However it doesn't change and can already be easily accessed from the
'ebase' variable (arch/mips/kernel/traps.c), so drop the host_ebase
member of kvm_vcpu_arch, export the 'ebase' variable to modules and load
from there instead.

This does result in a single extra instruction (lui) on the guest exit
path, but simplifies the code a bit and removes the redundant storage of
the host exception base address.

Credit for the idea goes to Cavium's VZ KVM implementation.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/mips/include/asm/kvm_host.h
arch/mips/kernel/asm-offsets.c
arch/mips/kernel/traps.c
arch/mips/kvm/locore.S
arch/mips/kvm/mips.c