All of lore.kernel.org
 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 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.