Kernel KVM-PPC virtualization development
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: kvm-ppc@vger.kernel.org
Subject: Re: [GIT PULL] Add KVM support for Book3s_64 (PPC64) hosts v3
Date: Wed, 02 Sep 2009 05:40:50 +0000	[thread overview]
Message-ID: <1251870050.14675.414.camel@pasglop> (raw)
In-Reply-To: <1248453028-49627-1-git-send-email-agraf@suse.de>

On Fri, 2009-07-24 at 18:30 +0200, Alexander Graf wrote:
> 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.

The git pull request is good when the series is good to pull or for
testing, but for review patches are nice :-)

So I never got enough time to look into too much details so far
(I'm still up for a little walkthrough on IRC one of these days
btw) but I did look at the changes to the powerpc core code and
they look ok to me.

The only thing I couldn't quite figure out is why you are adding
exports for mm_alloc() and switch_slb().

I spotted tons of stuff that could be optimized, especially in the
interrupt handling (but then, we all agree that using a magic page
is going to be much better), and I suppose we need to have a close
look at some aspects of the MMU emulation.

But for now, I'm happy with the merge, feel free to add my Acked-by,
just make sure it's marked CONFIG_EXPERIMENTAL.

Avi, are you taking care of it from here ?

Cheers,
Ben.

> 
> 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
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  parent reply	other threads:[~2009-09-02  5:40 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1251870050.14675.414.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=kvm-ppc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox