[PATCH 26/27] KVM: PPC: Add KVM intercept handlers

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Alexander Graf
Date: Thursday, April 15, 2010 - 3:11 pm

When an interrupt occurs we don't know yet if we're in guest context or
in host context. When in guest context, KVM needs to handle it.

So let's pull the same trick we did on Book3S_64: Just add a macro to
determine if we're in guest context or not and if so jump on to KVM code.

CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/powerpc/kernel/head_32.S |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index e025e89..98c4b29 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -33,6 +33,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/ptrace.h>
 #include <asm/bug.h>
+#include <asm/kvm_book3s_asm.h>
 
 /* 601 only have IBAT; cr0.eq is set on 601 when using this macro */
 #define LOAD_BAT(n, reg, RA, RB)	\
@@ -303,6 +304,7 @@ __secondary_hold_acknowledge:
  */
 #define EXCEPTION(n, label, hdlr, xfer)		\
 	. = n;					\
+	DO_KVM n;				\
 label:						\
 	EXCEPTION_PROLOG;			\
 	addi	r3,r1,STACK_FRAME_OVERHEAD;	\
@@ -358,6 +360,7 @@ i##n:								\
  *	-- paulus.
  */
 	. = 0x200
+	DO_KVM  0x200
 	mtspr	SPRN_SPRG_SCRATCH0,r10
 	mtspr	SPRN_SPRG_SCRATCH1,r11
 	mfcr	r10
@@ -381,6 +384,7 @@ i##n:								\
 
 /* Data access exception. */
 	. = 0x300
+	DO_KVM  0x300
 DataAccess:
 	EXCEPTION_PROLOG
 	mfspr	r10,SPRN_DSISR
@@ -397,6 +401,7 @@ DataAccess:
 
 /* Instruction access exception. */
 	. = 0x400
+	DO_KVM  0x400
 InstructionAccess:
 	EXCEPTION_PROLOG
 	andis.	r0,r9,0x4000		/* no pte found? */
@@ -413,6 +418,7 @@ InstructionAccess:
 
 /* Alignment exception */
 	. = 0x600
+	DO_KVM  0x600
 Alignment:
 	EXCEPTION_PROLOG
 	mfspr	r4,SPRN_DAR
@@ -427,6 +433,7 @@ Alignment:
 
 /* Floating-point unavailable */
 	. = 0x800
+	DO_KVM  0x800
 FPUnavailable:
 BEGIN_FTR_SECTION
 /*
@@ -450,6 +457,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
 
 /* System call */
 	. = 0xc00
+	DO_KVM  0xc00
 SystemCall:
 	EXCEPTION_PROLOG
 	EXC_XFER_EE_LITE(0xc00, DoSyscall)
@@ -467,9 +475,11 @@ SystemCall:
  * by executing an altivec instruction.
  */
 	. = 0xf00
+	DO_KVM  0xf00
 	b	PerformanceMonitor
 
 	. = 0xf20
+	DO_KVM  0xf20
 	b	AltiVecUnavailable
 
 /*
@@ -882,6 +892,10 @@ __secondary_start:
 	RFI
 #endif /* CONFIG_SMP */
 
+#ifdef CONFIG_KVM_BOOK3S_HANDLER
+#include "../kvm/book3s_rmhandlers.S"
+#endif
+
 /*
  * Those generic dummy functions are kept for CPUs not
  * included in CONFIG_6xx
-- 
1.6.0.2

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/27] Book3S_32 (PPC32) KVM support, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 01/27] KVM: PPC: Name generic 64-bit code generic, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 02/27] KVM: PPC: Add host MMU Support, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 03/27] KVM: PPC: Add SR swapping code, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 04/27] KVM: PPC: Add generic segment switching code, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 05/27] PPC: Split context init/destroy functions, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 06/27] KVM: PPC: Add kvm_book3s_64.h, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 07/27] KVM: PPC: Add kvm_book3s_32.h, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 08/27] KVM: PPC: Add fields to shadow vcpu, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 09/27] KVM: PPC: Improve indirect svcpu accessors, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 10/27] KVM: PPC: Use KVM_BOOK3S_HANDLER, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 11/27] KVM: PPC: Use CONFIG_PPC_BOOK3S define, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 12/27] PPC: Add STLU, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 13/27] KVM: PPC: Use now shadowed vcpu fields, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 14/27] KVM: PPC: Extract MMU init, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 15/27] KVM: PPC: Make real mode handler generic, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 16/27] KVM: PPC: Make highmem code generic, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 18/27] KVM: PPC: Release clean pages as clean, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 19/27] KVM: PPC: Remove fetch fail code, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 20/27] KVM: PPC: Add SVCPU to Book3S_32, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 21/27] KVM: PPC: Emulate segment fault, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 22/27] KVM: PPC: Add Book3S compatibility code, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 23/27] KVM: PPC: Export MMU variables, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 24/27] PPC: Export SWITCH_FRAME_SIZE, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 25/27] KVM: PPC: Check max IRQ prio, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 26/27] KVM: PPC: Add KVM intercept handlers, Alexander Graf, (Thu Apr 15, 3:11 pm)
[PATCH 27/27] KVM: PPC: Enable Book3S_32 KVM building, Alexander Graf, (Thu Apr 15, 3:11 pm)
Re: [PATCH 05/27] PPC: Split context init/destroy functions, Benjamin Herrenschmidt, (Thu Apr 15, 11:46 pm)
Re: [PATCH 12/27] PPC: Add STLU, Benjamin Herrenschmidt, (Thu Apr 15, 11:47 pm)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Benjamin Herrenschmidt, (Thu Apr 15, 11:47 pm)
Re: [PATCH 24/27] PPC: Export SWITCH_FRAME_SIZE, Benjamin Herrenschmidt, (Thu Apr 15, 11:48 pm)
Re: [PATCH 26/27] KVM: PPC: Add KVM intercept handlers, Benjamin Herrenschmidt, (Thu Apr 15, 11:48 pm)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Alexander Graf, (Fri Apr 16, 2:07 am)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Benjamin Herrenschmidt, (Fri Apr 16, 2:22 am)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Alexander Graf, (Fri Apr 16, 2:25 am)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Alexander Graf, (Fri Apr 16, 2:31 am)
Re: [PATCH 23/27] KVM: PPC: Export MMU variables, Alexander Graf, (Fri Apr 16, 4:18 am)
Re: [PATCH 00/27] Book3S_32 (PPC32) KVM support, Avi Kivity, (Wed Apr 21, 2:42 am)