public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] kvm: ppc: booke: Enhance wrapper functions to handle shadow registers
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 2/6] kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1 Bharat Bhushan
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

There are shadow registers like, GSPRG[0-3], GSRR0, GSRR1 etc on
BOOKE-HV and these shadow registers are guest accessible.
So these shadow registers needs to be updated on BOOKE-HV.
This patch enhance the existing macros to handle shadow registers.

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h | 59 ++++++++++++++++++++++++--------------
 1 file changed, 37 insertions(+), 22 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index f3f7611..627d61e 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -475,37 +475,52 @@ static inline bool kvmppc_shared_big_endian(struct kvm_vcpu *vcpu)
 #endif
 }
 
-#define SHARED_WRAPPER_GET(reg, size)					\
-static inline u##size kvmppc_get_##reg(struct kvm_vcpu *vcpu)	\
+static inline bool is_e500hv(void)
+{
+#ifdef CONFIG_KVM_BOOKE_HV
+	return true;
+#else
+	return false;
+#endif
+}
+
+#define SHARED_WRAPPER_GET(reg, size, e500hv_spr)			\
+static inline u##size kvmppc_get_##reg(struct kvm_vcpu *vcpu)		\
 {									\
+	if (is_e500hv() && e500hv_spr)					\
+		return mfspr(e500hv_spr);				\
+									\
 	if (kvmppc_shared_big_endian(vcpu))				\
 	       return be##size##_to_cpu(vcpu->arch.shared->reg);	\
 	else								\
 	       return le##size##_to_cpu(vcpu->arch.shared->reg);	\
 }									\
 
-#define SHARED_WRAPPER_SET(reg, size)					\
+#define SHARED_WRAPPER_SET(reg, size, e500hv_spr)			\
 static inline void kvmppc_set_##reg(struct kvm_vcpu *vcpu, u##size val)	\
 {									\
+	if (is_e500hv() && e500hv_spr)					\
+		mtspr(e500hv_spr, val);					\
+									\
 	if (kvmppc_shared_big_endian(vcpu))				\
 	       vcpu->arch.shared->reg = cpu_to_be##size(val);		\
 	else								\
 	       vcpu->arch.shared->reg = cpu_to_le##size(val);		\
 }									\
 
-#define SHARED_WRAPPER(reg, size)					\
-	SHARED_WRAPPER_GET(reg, size)					\
-	SHARED_WRAPPER_SET(reg, size)					\
-
-SHARED_WRAPPER(critical, 64)
-SHARED_WRAPPER(sprg0, 64)
-SHARED_WRAPPER(sprg1, 64)
-SHARED_WRAPPER(sprg2, 64)
-SHARED_WRAPPER(sprg3, 64)
-SHARED_WRAPPER(srr0, 64)
-SHARED_WRAPPER(srr1, 64)
-SHARED_WRAPPER(dar, 64)
-SHARED_WRAPPER_GET(msr, 64)
+#define SHARED_WRAPPER(reg, size, e500hv_spr)				\
+	SHARED_WRAPPER_GET(reg, size, e500hv_spr)			\
+	SHARED_WRAPPER_SET(reg, size, e500hv_spr)			\
+
+SHARED_WRAPPER(critical, 64, 0)
+SHARED_WRAPPER(sprg0, 64, SPRN_GSPRG0)
+SHARED_WRAPPER(sprg1, 64, SPRN_GSPRG1)
+SHARED_WRAPPER(sprg2, 64, SPRN_GSPRG2)
+SHARED_WRAPPER(sprg3, 64, SPRN_GSPRG3)
+SHARED_WRAPPER(srr0, 64, SPRN_GSRR0)
+SHARED_WRAPPER(srr1, 64, SPRN_GSRR1)
+SHARED_WRAPPER(dar, 64, SPRN_GDEAR)
+SHARED_WRAPPER_GET(msr, 64, 0)
 static inline void kvmppc_set_msr_fast(struct kvm_vcpu *vcpu, u64 val)
 {
 	if (kvmppc_shared_big_endian(vcpu))
@@ -513,12 +528,12 @@ static inline void kvmppc_set_msr_fast(struct kvm_vcpu *vcpu, u64 val)
 	else
 	       vcpu->arch.shared->msr = cpu_to_le64(val);
 }
-SHARED_WRAPPER(dsisr, 32)
-SHARED_WRAPPER(int_pending, 32)
-SHARED_WRAPPER(sprg4, 64)
-SHARED_WRAPPER(sprg5, 64)
-SHARED_WRAPPER(sprg6, 64)
-SHARED_WRAPPER(sprg7, 64)
+SHARED_WRAPPER(dsisr, 32, 0)
+SHARED_WRAPPER(int_pending, 32, 0)
+SHARED_WRAPPER(sprg4, 64, 0)
+SHARED_WRAPPER(sprg5, 64, 0)
+SHARED_WRAPPER(sprg6, 64, 0)
+SHARED_WRAPPER(sprg7, 64, 0)
 
 static inline u32 kvmppc_get_sr(struct kvm_vcpu *vcpu, int nr)
 {
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
  2014-07-15  7:01 ` [PATCH 1/6] kvm: ppc: booke: Enhance wrapper functions to handle shadow registers Bharat Bhushan
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 3/6] kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR Bharat Bhushan
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

Use kvmppc_set_srr0/srr1() and kvmppc_get_srr0/srr1() helper functions

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/kvm/booke.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index c2471ed..096998a 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -276,13 +276,8 @@ void kvmppc_core_dequeue_debug(struct kvm_vcpu *vcpu)
 
 static void set_guest_srr(struct kvm_vcpu *vcpu, unsigned long srr0, u32 srr1)
 {
-#ifdef CONFIG_KVM_BOOKE_HV
-	mtspr(SPRN_GSRR0, srr0);
-	mtspr(SPRN_GSRR1, srr1);
-#else
-	vcpu->arch.shared->srr0 = srr0;
-	vcpu->arch.shared->srr1 = srr1;
-#endif
+	kvmppc_set_srr0(vcpu, srr0);
+	kvmppc_set_srr1(vcpu, srr1);
 }
 
 static void set_guest_csrr(struct kvm_vcpu *vcpu, unsigned long srr0, u32 srr1)
@@ -1296,8 +1291,8 @@ int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
 	regs->lr = vcpu->arch.lr;
 	regs->xer = kvmppc_get_xer(vcpu);
 	regs->msr = vcpu->arch.shared->msr;
-	regs->srr0 = vcpu->arch.shared->srr0;
-	regs->srr1 = vcpu->arch.shared->srr1;
+	regs->srr0 = kvmppc_get_srr0(vcpu);
+	regs->srr1 = kvmppc_get_srr1(vcpu);
 	regs->pid = vcpu->arch.pid;
 	regs->sprg0 = vcpu->arch.shared->sprg0;
 	regs->sprg1 = vcpu->arch.shared->sprg1;
@@ -1324,8 +1319,8 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
 	vcpu->arch.lr = regs->lr;
 	kvmppc_set_xer(vcpu, regs->xer);
 	kvmppc_set_msr(vcpu, regs->msr);
-	vcpu->arch.shared->srr0 = regs->srr0;
-	vcpu->arch.shared->srr1 = regs->srr1;
+	kvmppc_set_srr0(vcpu, regs->srr0);
+	kvmppc_set_srr1(vcpu, regs->srr1);
 	kvmppc_set_pid(vcpu, regs->pid);
 	vcpu->arch.shared->sprg0 = regs->sprg0;
 	vcpu->arch.shared->sprg1 = regs->sprg1;
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
  2014-07-15  7:01 ` [PATCH 1/6] kvm: ppc: booke: Enhance wrapper functions to handle shadow registers Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 2/6] kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1 Bharat Bhushan
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 4/6] kvm: ppc: booke: Add shared struct helpers of SPRN_ESR Bharat Bhushan
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

Uses kvmppc_set_dar() and kvmppc_get_dar() helper functions

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/kvm/booke.c | 24 +++---------------------
 1 file changed, 3 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 096998a..20296c8 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -302,24 +302,6 @@ static void set_guest_mcsrr(struct kvm_vcpu *vcpu, unsigned long srr0, u32 srr1)
 	vcpu->arch.mcsrr1 = srr1;
 }
 
-static unsigned long get_guest_dear(struct kvm_vcpu *vcpu)
-{
-#ifdef CONFIG_KVM_BOOKE_HV
-	return mfspr(SPRN_GDEAR);
-#else
-	return vcpu->arch.shared->dar;
-#endif
-}
-
-static void set_guest_dear(struct kvm_vcpu *vcpu, unsigned long dear)
-{
-#ifdef CONFIG_KVM_BOOKE_HV
-	mtspr(SPRN_GDEAR, dear);
-#else
-	vcpu->arch.shared->dar = dear;
-#endif
-}
-
 static unsigned long get_guest_esr(struct kvm_vcpu *vcpu)
 {
 #ifdef CONFIG_KVM_BOOKE_HV
@@ -461,7 +443,7 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu,
 		if (update_esr == true)
 			set_guest_esr(vcpu, vcpu->arch.queued_esr);
 		if (update_dear == true)
-			set_guest_dear(vcpu, vcpu->arch.queued_dear);
+			kvmppc_set_dar(vcpu, vcpu->arch.queued_dear);
 		if (update_epr == true) {
 			if (vcpu->arch.epr_flags & KVMPPC_EPR_USER)
 				kvm_make_request(KVM_REQ_EPR_EXIT, vcpu);
@@ -1348,7 +1330,7 @@ static void get_sregs_base(struct kvm_vcpu *vcpu,
 	sregs->u.e.csrr1 = vcpu->arch.csrr1;
 	sregs->u.e.mcsr = vcpu->arch.mcsr;
 	sregs->u.e.esr = get_guest_esr(vcpu);
-	sregs->u.e.dear = get_guest_dear(vcpu);
+	sregs->u.e.dear = kvmppc_get_dar(vcpu);
 	sregs->u.e.tsr = vcpu->arch.tsr;
 	sregs->u.e.tcr = vcpu->arch.tcr;
 	sregs->u.e.dec = kvmppc_get_dec(vcpu, tb);
@@ -1366,7 +1348,7 @@ static int set_sregs_base(struct kvm_vcpu *vcpu,
 	vcpu->arch.csrr1 = sregs->u.e.csrr1;
 	vcpu->arch.mcsr = sregs->u.e.mcsr;
 	set_guest_esr(vcpu, sregs->u.e.esr);
-	set_guest_dear(vcpu, sregs->u.e.dear);
+	kvmppc_set_dar(vcpu, sregs->u.e.dear);
 	vcpu->arch.vrsave = sregs->u.e.vrsave;
 	kvmppc_set_tcr(vcpu, sregs->u.e.tcr);
 
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] kvm: ppc: booke: Add shared struct helpers of SPRN_ESR
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
                   ` (2 preceding siblings ...)
  2014-07-15  7:01 ` [PATCH 3/6] kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR Bharat Bhushan
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 5/6] kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7 Bharat Bhushan
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

Add and use kvmppc_set_esr() and kvmppc_get_esr() helper functions

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |  1 +
 arch/powerpc/kvm/booke.c           | 24 +++---------------------
 2 files changed, 4 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 627d61e..04280f5 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -520,6 +520,7 @@ SHARED_WRAPPER(sprg3, 64, SPRN_GSPRG3)
 SHARED_WRAPPER(srr0, 64, SPRN_GSRR0)
 SHARED_WRAPPER(srr1, 64, SPRN_GSRR1)
 SHARED_WRAPPER(dar, 64, SPRN_GDEAR)
+SHARED_WRAPPER(esr, 64, SPRN_GESR)
 SHARED_WRAPPER_GET(msr, 64, 0)
 static inline void kvmppc_set_msr_fast(struct kvm_vcpu *vcpu, u64 val)
 {
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 20296c8..81484d9 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -302,24 +302,6 @@ static void set_guest_mcsrr(struct kvm_vcpu *vcpu, unsigned long srr0, u32 srr1)
 	vcpu->arch.mcsrr1 = srr1;
 }
 
-static unsigned long get_guest_esr(struct kvm_vcpu *vcpu)
-{
-#ifdef CONFIG_KVM_BOOKE_HV
-	return mfspr(SPRN_GESR);
-#else
-	return vcpu->arch.shared->esr;
-#endif
-}
-
-static void set_guest_esr(struct kvm_vcpu *vcpu, u32 esr)
-{
-#ifdef CONFIG_KVM_BOOKE_HV
-	mtspr(SPRN_GESR, esr);
-#else
-	vcpu->arch.shared->esr = esr;
-#endif
-}
-
 static unsigned long get_guest_epr(struct kvm_vcpu *vcpu)
 {
 #ifdef CONFIG_KVM_BOOKE_HV
@@ -441,7 +423,7 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu,
 
 		vcpu->arch.pc = vcpu->arch.ivpr | vcpu->arch.ivor[priority];
 		if (update_esr == true)
-			set_guest_esr(vcpu, vcpu->arch.queued_esr);
+			kvmppc_set_esr(vcpu, vcpu->arch.queued_esr);
 		if (update_dear == true)
 			kvmppc_set_dar(vcpu, vcpu->arch.queued_dear);
 		if (update_epr == true) {
@@ -1329,7 +1311,7 @@ static void get_sregs_base(struct kvm_vcpu *vcpu,
 	sregs->u.e.csrr0 = vcpu->arch.csrr0;
 	sregs->u.e.csrr1 = vcpu->arch.csrr1;
 	sregs->u.e.mcsr = vcpu->arch.mcsr;
-	sregs->u.e.esr = get_guest_esr(vcpu);
+	sregs->u.e.esr = kvmppc_get_esr(vcpu);
 	sregs->u.e.dear = kvmppc_get_dar(vcpu);
 	sregs->u.e.tsr = vcpu->arch.tsr;
 	sregs->u.e.tcr = vcpu->arch.tcr;
@@ -1347,7 +1329,7 @@ static int set_sregs_base(struct kvm_vcpu *vcpu,
 	vcpu->arch.csrr0 = sregs->u.e.csrr0;
 	vcpu->arch.csrr1 = sregs->u.e.csrr1;
 	vcpu->arch.mcsr = sregs->u.e.mcsr;
-	set_guest_esr(vcpu, sregs->u.e.esr);
+	kvmppc_set_esr(vcpu, sregs->u.e.esr);
 	kvmppc_set_dar(vcpu, sregs->u.e.dear);
 	vcpu->arch.vrsave = sregs->u.e.vrsave;
 	kvmppc_set_tcr(vcpu, sregs->u.e.tcr);
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
                   ` (3 preceding siblings ...)
  2014-07-15  7:01 ` [PATCH 4/6] kvm: ppc: booke: Add shared struct helpers of SPRN_ESR Bharat Bhushan
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15  7:01 ` [PATCH 6/6] kvm: ppc: Add SPRN_SPR get helper function Bharat Bhushan
  2014-07-15 11:52 ` [PATCH 0/6] Cleanup and fixes related to helper SPRN_XX functions Alexander Graf
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

Use kvmppc_set_sprg[0-7]() and kvmppc_get_sprg[0-7]() helper
functions

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/kvm/booke.c         | 32 ++++++++++++++++----------------
 arch/powerpc/kvm/booke_emulate.c |  8 ++++----
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 81484d9..9606139 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -1258,14 +1258,14 @@ int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
 	regs->srr0 = kvmppc_get_srr0(vcpu);
 	regs->srr1 = kvmppc_get_srr1(vcpu);
 	regs->pid = vcpu->arch.pid;
-	regs->sprg0 = vcpu->arch.shared->sprg0;
-	regs->sprg1 = vcpu->arch.shared->sprg1;
-	regs->sprg2 = vcpu->arch.shared->sprg2;
-	regs->sprg3 = vcpu->arch.shared->sprg3;
-	regs->sprg4 = vcpu->arch.shared->sprg4;
-	regs->sprg5 = vcpu->arch.shared->sprg5;
-	regs->sprg6 = vcpu->arch.shared->sprg6;
-	regs->sprg7 = vcpu->arch.shared->sprg7;
+	regs->sprg0 = kvmppc_get_sprg0(vcpu);
+	regs->sprg1 = kvmppc_get_sprg1(vcpu);
+	regs->sprg2 = kvmppc_get_sprg2(vcpu);
+	regs->sprg3 = kvmppc_get_sprg3(vcpu);
+	regs->sprg4 = kvmppc_get_sprg4(vcpu);
+	regs->sprg5 = kvmppc_get_sprg5(vcpu);
+	regs->sprg6 = kvmppc_get_sprg6(vcpu);
+	regs->sprg7 = kvmppc_get_sprg7(vcpu);
 
 	for (i = 0; i < ARRAY_SIZE(regs->gpr); i++)
 		regs->gpr[i] = kvmppc_get_gpr(vcpu, i);
@@ -1286,14 +1286,14 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
 	kvmppc_set_srr0(vcpu, regs->srr0);
 	kvmppc_set_srr1(vcpu, regs->srr1);
 	kvmppc_set_pid(vcpu, regs->pid);
-	vcpu->arch.shared->sprg0 = regs->sprg0;
-	vcpu->arch.shared->sprg1 = regs->sprg1;
-	vcpu->arch.shared->sprg2 = regs->sprg2;
-	vcpu->arch.shared->sprg3 = regs->sprg3;
-	vcpu->arch.shared->sprg4 = regs->sprg4;
-	vcpu->arch.shared->sprg5 = regs->sprg5;
-	vcpu->arch.shared->sprg6 = regs->sprg6;
-	vcpu->arch.shared->sprg7 = regs->sprg7;
+	kvmppc_set_sprg0(vcpu, regs->sprg0);
+	kvmppc_set_sprg1(vcpu, regs->sprg1);
+	kvmppc_set_sprg2(vcpu, regs->sprg2);
+	kvmppc_set_sprg3(vcpu, regs->sprg3);
+	kvmppc_set_sprg4(vcpu, regs->sprg4);
+	kvmppc_set_sprg5(vcpu, regs->sprg5);
+	kvmppc_set_sprg6(vcpu, regs->sprg6);
+	kvmppc_set_sprg7(vcpu, regs->sprg7);
 
 	for (i = 0; i < ARRAY_SIZE(regs->gpr); i++)
 		kvmppc_set_gpr(vcpu, i, regs->gpr[i]);
diff --git a/arch/powerpc/kvm/booke_emulate.c b/arch/powerpc/kvm/booke_emulate.c
index 3d143fe..3330faf 100644
--- a/arch/powerpc/kvm/booke_emulate.c
+++ b/arch/powerpc/kvm/booke_emulate.c
@@ -310,16 +310,16 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, ulong spr_val)
 	 * guest (PR-mode only).
 	 */
 	case SPRN_SPRG4:
-		vcpu->arch.shared->sprg4 = spr_val;
+		kvmppc_set_sprg4(vcpu, spr_val);
 		break;
 	case SPRN_SPRG5:
-		vcpu->arch.shared->sprg5 = spr_val;
+		kvmppc_set_sprg5(vcpu, spr_val);
 		break;
 	case SPRN_SPRG6:
-		vcpu->arch.shared->sprg6 = spr_val;
+		kvmppc_set_sprg6(vcpu, spr_val);
 		break;
 	case SPRN_SPRG7:
-		vcpu->arch.shared->sprg7 = spr_val;
+		kvmppc_set_sprg7(vcpu, spr_val);
 		break;
 
 	case SPRN_IVPR:
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] kvm: ppc: Add SPRN_SPR get helper function
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
                   ` (4 preceding siblings ...)
  2014-07-15  7:01 ` [PATCH 5/6] kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7 Bharat Bhushan
@ 2014-07-15  7:01 ` Bharat Bhushan
  2014-07-15 11:52 ` [PATCH 0/6] Cleanup and fixes related to helper SPRN_XX functions Alexander Graf
  6 siblings, 0 replies; 7+ messages in thread
From: Bharat Bhushan @ 2014-07-15  7:01 UTC (permalink / raw)
  To: agraf, kvm-ppc; +Cc: kvm, scottwood, stuart.yoder, Bharat Bhushan

kvmppc_set_epr() is already defined in asm/kvm_ppc.h, So
rename and move get_epr helper function to same file.

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |  9 +++++++++
 arch/powerpc/kvm/booke.c           | 11 +----------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 04280f5..ad14d26 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -395,6 +395,15 @@ static inline int kvmppc_xics_hcall(struct kvm_vcpu *vcpu, u32 cmd)
 	{ return 0; }
 #endif
 
+static inline unsigned long kvmppc_get_epr(struct kvm_vcpu *vcpu)
+{
+#ifdef CONFIG_KVM_BOOKE_HV
+	return mfspr(SPRN_GEPR);
+#else
+	return vcpu->arch.epr;
+#endif
+}
+
 static inline void kvmppc_set_epr(struct kvm_vcpu *vcpu, u32 epr)
 {
 #ifdef CONFIG_KVM_BOOKE_HV
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 9606139..5e9a380 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -302,15 +302,6 @@ static void set_guest_mcsrr(struct kvm_vcpu *vcpu, unsigned long srr0, u32 srr1)
 	vcpu->arch.mcsrr1 = srr1;
 }
 
-static unsigned long get_guest_epr(struct kvm_vcpu *vcpu)
-{
-#ifdef CONFIG_KVM_BOOKE_HV
-	return mfspr(SPRN_GEPR);
-#else
-	return vcpu->arch.epr;
-#endif
-}
-
 /* Deliver the interrupt of the corresponding priority, if possible. */
 static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu,
                                         unsigned int priority)
@@ -1483,7 +1474,7 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)
 		val = get_reg_val(reg->id, vcpu->arch.dbg_reg.dac2);
 		break;
 	case KVM_REG_PPC_EPR: {
-		u32 epr = get_guest_epr(vcpu);
+		u32 epr = kvmppc_get_epr(vcpu);
 		val = get_reg_val(reg->id, epr);
 		break;
 	}
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/6] Cleanup and fixes related to helper SPRN_XX functions
       [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
                   ` (5 preceding siblings ...)
  2014-07-15  7:01 ` [PATCH 6/6] kvm: ppc: Add SPRN_SPR get helper function Bharat Bhushan
@ 2014-07-15 11:52 ` Alexander Graf
  6 siblings, 0 replies; 7+ messages in thread
From: Alexander Graf @ 2014-07-15 11:52 UTC (permalink / raw)
  To: Bharat Bhushan; +Cc: kvm-ppc, kvm, scottwood, stuart.yoder

On 07/15/2014 09:01 AM, Bharat Bhushan wrote:
> These are primarily the cleanup patches, where shared struct get/set
> helper function are enhanced to handle shadow registers and uses those
> helper functions.
> Eventually this also fix SRR0/1 synchronization from userspace
>
> Bharat Bhushan (6):
>    kvm: ppc: booke: Enhance wrapper functions to handle shadow registers
>    kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1
>    kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR
>    kvm: ppc: booke: Add shared struct helpers of SPRN_ESR
>    kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7
>    kvm: ppc: Add SPRN_SPR get helper function

Thanks, applied all to kvm-ppc-queue.

(resend without triple-x in the subject line)


Alex


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-07-15 11:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1405407692-32075-1-git-send-email-Bharat.Bhushan@freescale.com>
2014-07-15  7:01 ` [PATCH 1/6] kvm: ppc: booke: Enhance wrapper functions to handle shadow registers Bharat Bhushan
2014-07-15  7:01 ` [PATCH 2/6] kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1 Bharat Bhushan
2014-07-15  7:01 ` [PATCH 3/6] kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR Bharat Bhushan
2014-07-15  7:01 ` [PATCH 4/6] kvm: ppc: booke: Add shared struct helpers of SPRN_ESR Bharat Bhushan
2014-07-15  7:01 ` [PATCH 5/6] kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7 Bharat Bhushan
2014-07-15  7:01 ` [PATCH 6/6] kvm: ppc: Add SPRN_SPR get helper function Bharat Bhushan
2014-07-15 11:52 ` [PATCH 0/6] Cleanup and fixes related to helper SPRN_XX functions Alexander Graf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox