[PATCH v5 0/6] KVM: PPC: Book3S: MMIO support for Little Endian guests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux