KVM: PPC: booke: category E.HV (GS-mode) support
authorScott Wood <scottwood@freescale.com>
Tue, 20 Dec 2011 15:34:43 +0000 (15:34 +0000)
committerAvi Kivity <avi@redhat.com>
Sun, 8 Apr 2012 09:51:19 +0000 (12:51 +0300)
commitd30f6e480055e5be12e7a03fd11ea912a451daa5
treee6c367e6f1da4da67b3a395a1a735a09e52067c0
parentcfac57847a67c4903f34a77e971521531bbc7c77
KVM: PPC: booke: category E.HV (GS-mode) support

Chips such as e500mc that implement category E.HV in Power ISA 2.06
provide hardware virtualization features, including a new MSR mode for
guest state.  The guest OS can perform many operations without trapping
into the hypervisor, including transitions to and from guest userspace.

Since we can use SRR1[GS] to reliably tell whether an exception came from
guest state, instead of messing around with IVPR, we use DO_KVM similarly
to book3s.

Current issues include:
 - Machine checks from guest state are not routed to the host handler.
 - The guest can cause a host oops by executing an emulated instruction
   in a page that lacks read permission.  Existing e500/4xx support has
   the same problem.

Includes work by Ashish Kalra <Ashish.Kalra@freescale.com>,
Varun Sethi <Varun.Sethi@freescale.com>, and
Liu Yu <yu.liu@freescale.com>.

Signed-off-by: Scott Wood <scottwood@freescale.com>
[agraf: remove pt_regs usage]
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
18 files changed:
arch/powerpc/include/asm/dbell.h
arch/powerpc/include/asm/kvm_asm.h
arch/powerpc/include/asm/kvm_booke_hv_asm.h [new file with mode: 0644]
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/include/asm/kvm_ppc.h
arch/powerpc/include/asm/mmu-book3e.h
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/reg.h
arch/powerpc/include/asm/reg_booke.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/head_booke.h
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/booke.c
arch/powerpc/kvm/booke.h
arch/powerpc/kvm/booke_emulate.c
arch/powerpc/kvm/bookehv_interrupts.S [new file with mode: 0644]
arch/powerpc/kvm/powerpc.c
arch/powerpc/kvm/timing.h