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
next prev 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