[PATCH v3 00/14] ARM/ARM64: KVM: big endian host support

Victor Kamensky victor.kamensky at linaro.org
Tue May 13 09:13:52 PDT 2014


Hi,

Here is updated patches to address KVM host support in big endian
ARM V7/V8.

Changes since previous version [1] and [2]:

x) joined both v7 [1] and v8 [2] series into one

x) addressed, nearly all, Christoffer's comments to previous
patch series

x) Fixed few issues in 'ARM: KVM: handle 64bit values passed to
mrcc or from mcrr instructions in BE case' that got discovered
after moving to the latest v3.15-rc5 kernel

x) Fixed issue in supporting 32bit guest by V8 BE KVM host

All patches except 'ARM: KVM: one_reg coproc set and
get BE fixes', as far as I see, are best possible proposal.
'ARM: KVM: one_reg coproc set and get BE fixes' changes still
need more discussion. Patch included with this series covers
one possible solution, I'll post notes about other approach
previously suggested by Alex Graf separately.

The patches were tested on top of v3.15-rc5 on TC2 (V7) and 
fastmodels (V8). Tested all possible combinations of KVM host
and guests (V7/V8, BE/LE, 64bit/32bit).

Thanks,
Victor

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/231881.html

[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/231889.html

Victor Kamensky (14):
  ARM: KVM: switch hypervisor into BE mode in case of BE host
  ARM: KVM: fix vgic V7 assembler code to work in BE image
  ARM: KVM: handle 64bit values passed to mrcc or from mcrr instructions
    in BE case
  ARM: KVM: __kvm_vcpu_run function return result fix in BE case
  ARM: KVM: vgic mmio should hold data as LE bytes array in BE case
  ARM: KVM: MMIO support BE host running LE code
  ARM: KVM: one_reg coproc set and get BE fixes
  ARM: KVM: enable KVM in Kconfig on big-endian systems
  ARM64: KVM: MMIO support BE host running LE code
  ARM64: KVM: store kvm_vcpu_fault_info est_el2 as word
  ARM64: KVM: fix vgic_bitmap_get_reg function for BE 64bit case
  ARM64: KVM: vgic_elrsr and vgic_eisr need to be byteswapped in BE case
  ARM64: KVM: set and get of sys registers in BE case
  ARM64: KVM: fix big endian issue in access_vm_reg for 32bit guest

 arch/arm/include/asm/kvm_asm.h       |  18 ++++++
 arch/arm/include/asm/kvm_emulate.h   |  22 +++++--
 arch/arm/kvm/Kconfig                 |   2 +-
 arch/arm/kvm/coproc.c                | 118 +++++++++++++++++++++++++++--------
 arch/arm/kvm/init.S                  |   7 ++-
 arch/arm/kvm/interrupts.S            |   9 ++-
 arch/arm/kvm/interrupts_head.S       |  20 +++++-
 arch/arm64/include/asm/kvm_emulate.h |  22 +++++++
 arch/arm64/kvm/hyp.S                 |   9 ++-
 arch/arm64/kvm/sys_regs.c            |  33 +++++++---
 virt/kvm/arm/vgic.c                  |  28 +++++++--
 11 files changed, 237 insertions(+), 51 deletions(-)

-- 
1.8.1.4




More information about the linux-arm-kernel mailing list