MIO emulation reads the last instruction executed by the guest and then emulates. If the guest is running in Little Endian mode, the instruction needs to be byte-swapped before being emulated. The first patches add simple helper routines to load instructions from the guest. It prepares ground for the byte-swapping of instructions when reading memory from Little Endian guests. The last patches enable the MMIO support by byte-swapping the last instruction if the guest is Little Endian and add support for little endian host and Split Little Endian mode. This patchset is based on Alex Graf's kvm-ppc-queue branch. It has been tested with anton's patchset for Big Endian and Little Endian HV guests and Big Endian PR guests. The kvm-ppc-queue branch I am using might be a bit outdated. The HEAD is on : 0c58eb4 KVM: PPC: E500: Add userspace debug stub support Changes in v5: - changed register usage slightly (paulus@xxxxxxxxx) - added #ifdef CONFIG_PPC64 in book3s_segment.S (paulus@xxxxxxxxx) - added support for little endian host - added support for Split Little Endian (SLE) Changes in v4: - got rid of useless helper routine kvmppc_ld_inst(). (Alexander Graf) Changes in v3: - moved kvmppc_need_byteswap() in kvmppc_ld32. It previously was in kvmppc_ld_inst(). (Alexander Graf) Changes in v2: - replaced rldicl. by andi. to test the MSR_LE bit in the guest exit paths. (Paul Mackerras) - moved the byte swapping logic to kvmppc_handle_load() and kvmppc_handle_load() by changing the is_bigendian parameter meaning. (Paul Mackerras) Thanks, C. Cédric Le Goater (6): KVM: PPC: Book3S: add helper routine to load guest instructions KVM: PPC: Book3S: add helper routines to detect endian KVM: PPC: Book3S: MMIO emulation support for little endian guests KVM: PPC: Book3S: modify kvmppc_need_byteswap() for little endian host powerpc: add Split Little Endian bit to MSR KVM: PPC: Book3S: modify byte loading when guest uses Split Little Endian arch/powerpc/include/asm/kvm_book3s.h | 43 +++++++++++++++++++++++++++++-- arch/powerpc/include/asm/kvm_ppc.h | 10 +++---- arch/powerpc/include/asm/reg.h | 3 +++ arch/powerpc/kernel/process.c | 1 + arch/powerpc/kvm/book3s_64_mmu_hv.c | 2 +- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 9 +++++++ arch/powerpc/kvm/book3s_pr.c | 2 +- arch/powerpc/kvm/book3s_segment.S | 9 +++++++ arch/powerpc/kvm/emulate.c | 1 - arch/powerpc/kvm/powerpc.c | 16 +++++++++--- 10 files changed, 82 insertions(+), 14 deletions(-) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html