All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] Add KVM support for Book3s_64 (PPC64) hosts v3
@ 2009-07-24 16:30 Alexander Graf
  2009-07-26 11:52 ` Avi Kivity
                   ` (24 more replies)
  0 siblings, 25 replies; 26+ messages in thread
From: Alexander Graf @ 2009-07-24 16:30 UTC (permalink / raw)
  To: kvm-ppc

KVM for PowerPC only supports embedded cores at the moment.

While it makes sense to virtualize on small machines, it's even more fun
to do so on big boxes. So I figured we need KVM for PowerPC64 as well.

This patchset implements KVM support for Book3s_64 hosts and guest support
for Book3s_64 and G3/G4.

To really make use of this, you will also need a modified version of qemu
that can deal with KVM on desktop cores. I will send out patches for those
later, but want to get feedback on the kernel side first.

In the meanwhile, use the qemu version from
http://www.powerkvm.org/powerkvm.git which already includes all required
patches to run G3/G4 and G5 guests.


To not spam on everyone on the list, I figured I'd send this as a git pull
request this time. If I did anything wrong, please tell me :-).

V1 -> V2:

 - extend sregs with padding
 - new naming scheme (ppc64 -> book3s_64; 74xx -> book3s_32)
 - to_phys -> in-kernel tophys()
 - loadimm -> LOAD_REG_IMMEDIATE
 - call .ko kvm.ko
 - set magic paca bit later
 - run guest code with PACA->soft_enabled=true
 - pt_regs for host state saving (guest too?)
 - only do HV dcbz trick on 970
 - refuse to run on LPAR because of missing SLB pieces

V2 -> V3:

 - fix DAR/DSISR saving
 - allow running on LPAR by modifying the SLB shadow
 - change the SLB implementation to use a mem-backed cache and do
   full world switch on enter/exit. gets rid of "context" magic
 - be more aggressive about DEC injection
 - remove fast ld/st because we're always in host context
 - don't use SPRGs in real->paged transition
 - implement dirty log
 - remove MMIO speedup code
 - SPRG cleanup
   - rename SPRG3 -> SPRN_SPRG_PACA
   - rename SPRG1 -> SPRN_SPRG_SCRATCH0
   - don't use SPRG2

TODO:

 - use MMU Notifiers
 - use u64* for dirty log




The following changes since commit 84a3c0818fe9d7a1e34c188d6182793f213a6a66:
  Gleb Natapov (1):
        KVM: Reduce runnability interface with arch support code

are available in the git repository at:

  git://csgraf.de/kvm ppc-v3

Alexander Graf (25):
      Move dirty logging code to sub-arch
      Pass PVR in sregs
      Add Book3s definitions
      Add Book3s fields to vcpu structs
      Add asm/kvm_book3s.h
      Add Book3s_64 intercept helpers
      Add book3s_64 highmem asm code
      Add SLB switching code for entry/exit
      Add interrupt handling code
      Add book3s.c
      Add book3s_64 Host MMU handling
      Add book3s_64 guest MMU
      Add book3s_32 guest MMU
      Add book3s_64 specific opcode emulation
      Add mfdec emulation
      Add desktop PowerPC specific emulation
      Make head_64.S aware of KVM real mode code
      Add Book3s_64 offsets to asm-offsets.c
      Export symbols for KVM module
      Export KVM symbols for module
      Add fields to PACA
      Export new PACA constants in asm-offsets
      Include Book3s_64 target in buildsystem
      Fix trace.h
      Enable 32bit dirty log pointers on 64bit host

 arch/powerpc/include/asm/exception.h         |    2 +
 arch/powerpc/include/asm/kvm.h               |    2 +
 arch/powerpc/include/asm/kvm_asm.h           |   49 ++
 arch/powerpc/include/asm/kvm_book3s.h        |  135 ++++
 arch/powerpc/include/asm/kvm_book3s_64_asm.h |   58 ++
 arch/powerpc/include/asm/kvm_host.h          |   76 +++-
 arch/powerpc/include/asm/kvm_ppc.h           |    1 +
 arch/powerpc/include/asm/paca.h              |    9 +
 arch/powerpc/kernel/asm-offsets.c            |   18 +
 arch/powerpc/kernel/exceptions-64s.S         |    8 +
 arch/powerpc/kernel/head_64.S                |    6 +
 arch/powerpc/kernel/ppc_ksyms.c              |    3 +-
 arch/powerpc/kernel/time.c                   |    1 +
 arch/powerpc/kvm/Kconfig                     |   17 +
 arch/powerpc/kvm/Makefile                    |   27 +-
 arch/powerpc/kvm/book3s.c                    |  919 ++++++++++++++++++++++++++
 arch/powerpc/kvm/book3s_32_mmu.c             |  354 ++++++++++
 arch/powerpc/kvm/book3s_64_emulate.c         |  338 ++++++++++
 arch/powerpc/kvm/book3s_64_exports.c         |   24 +
 arch/powerpc/kvm/book3s_64_interrupts.S      |  392 +++++++++++
 arch/powerpc/kvm/book3s_64_mmu.c             |  469 +++++++++++++
 arch/powerpc/kvm/book3s_64_mmu_host.c        |  412 ++++++++++++
 arch/powerpc/kvm/book3s_64_rmhandlers.S      |  131 ++++
 arch/powerpc/kvm/book3s_64_slb.S             |  277 ++++++++
 arch/powerpc/kvm/booke.c                     |    5 +
 arch/powerpc/kvm/emulate.c                   |   43 ++-
 arch/powerpc/kvm/powerpc.c                   |    5 -
 arch/powerpc/kvm/trace.h                     |    6 +-
 arch/powerpc/mm/hash_utils_64.c              |    2 +
 arch/powerpc/mm/mmu_context_hash64.c         |    4 +
 arch/powerpc/mm/slb.c                        |    2 +
 kernel/fork.c                                |    1 +
 virt/kvm/kvm_main.c                          |    5 +
 33 files changed, 3786 insertions(+), 15 deletions(-)
 create mode 100644 arch/powerpc/include/asm/kvm_book3s.h
 create mode 100644 arch/powerpc/include/asm/kvm_book3s_64_asm.h
 create mode 100644 arch/powerpc/kvm/book3s.c
 create mode 100644 arch/powerpc/kvm/book3s_32_mmu.c
 create mode 100644 arch/powerpc/kvm/book3s_64_emulate.c
 create mode 100644 arch/powerpc/kvm/book3s_64_exports.c
 create mode 100644 arch/powerpc/kvm/book3s_64_interrupts.S
 create mode 100644 arch/powerpc/kvm/book3s_64_mmu.c
 create mode 100644 arch/powerpc/kvm/book3s_64_mmu_host.c
 create mode 100644 arch/powerpc/kvm/book3s_64_rmhandlers.S
 create mode 100644 arch/powerpc/kvm/book3s_64_slb.S

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2009-09-02 15:21 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-24 16:30 [GIT PULL] Add KVM support for Book3s_64 (PPC64) hosts v3 Alexander Graf
2009-07-26 11:52 ` Avi Kivity
2009-07-26 11:55 ` Alexander Graf
2009-07-26 12:10 ` Avi Kivity
2009-07-26 12:26 ` Alexander Graf
2009-07-26 12:46 ` Avi Kivity
2009-07-26 12:46 ` Alexander Graf
2009-07-26 12:54 ` Alexander Graf
2009-07-26 12:56 ` Avi Kivity
2009-07-26 17:25 ` Alexander Graf
2009-07-26 17:53 ` Avi Kivity
2009-07-26 20:47 ` Alexander Graf
2009-07-26 22:04 ` Benjamin Herrenschmidt
2009-07-26 22:05 ` Benjamin Herrenschmidt
2009-07-26 22:06 ` Benjamin Herrenschmidt
2009-07-26 22:11 ` Benjamin Herrenschmidt
2009-07-27 19:04 ` Hollis Blanchard
2009-07-27 23:43 ` Benjamin Herrenschmidt
2009-07-29 10:14 ` Avi Kivity
2009-07-29 10:15 ` Avi Kivity
2009-09-02  5:40 ` Benjamin Herrenschmidt
2009-09-02  6:16 ` Alexander Graf
2009-09-02  6:23 ` Benjamin Herrenschmidt
2009-09-02  6:34 ` Alexander Graf
2009-09-02  6:52 ` Benjamin Herrenschmidt
2009-09-02 15:21 ` Hollis Blanchard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.