All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry
@ 2012-02-03 10:53 Paul Mackerras
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Mackerras @ 2012-02-03 10:53 UTC (permalink / raw)
  To: kvm-ppc

The ABI specifies that CR fields CR2--CR4 are nonvolatile across function
calls.  Currently __kvmppc_vcore_entry doesn't save and restore the CR,
leading to CR2--CR4 getting corrupted with guest values, possibly leading
to incorrect behaviour in its caller.  This adds instructions to save
and restore CR at the points where we save and restore the nonvolatile
GPRs.

Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 arch/powerpc/kvm/book3s_hv_interrupts.S |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_hv_interrupts.S b/arch/powerpc/kvm/book3s_hv_interrupts.S
index 3f7b674..d3fb4df 100644
--- a/arch/powerpc/kvm/book3s_hv_interrupts.S
+++ b/arch/powerpc/kvm/book3s_hv_interrupts.S
@@ -46,8 +46,10 @@ _GLOBAL(__kvmppc_vcore_entry)
 	/* Save host state to the stack */
 	stdu	r1, -SWITCH_FRAME_SIZE(r1)
 
-	/* Save non-volatile registers (r14 - r31) */
+	/* Save non-volatile registers (r14 - r31) and CR */
 	SAVE_NVGPRS(r1)
+	mfcr	r3
+	std	r3, _CCR(r1)
 
 	/* Save host DSCR */
 BEGIN_FTR_SECTION
@@ -157,8 +159,10 @@ kvmppc_handler_highmem:
 	 * R13      = PACA
 	 */
 
-	/* Restore non-volatile host registers (r14 - r31) */
+	/* Restore non-volatile host registers (r14 - r31) and CR */
 	REST_NVGPRS(r1)
+	ld	r4, _CCR(r1)
+	mtcr	r4
 
 	addi    r1, r1, SWITCH_FRAME_SIZE
 	ld	r0, PPC_LR_STKOFF(r1)
-- 
1.7.8.3


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

* Re: [PATCH 1/4] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry
@ 2012-03-05 19:11 Alexander Graf
  0 siblings, 0 replies; 2+ messages in thread
From: Alexander Graf @ 2012-03-05 19:11 UTC (permalink / raw)
  To: kvm-ppc

On 02/03/2012 11:53 AM, Paul Mackerras wrote:
> The ABI specifies that CR fields CR2--CR4 are nonvolatile across function
> calls.  Currently __kvmppc_vcore_entry doesn't save and restore the CR,
> leading to CR2--CR4 getting corrupted with guest values, possibly leading
> to incorrect behaviour in its caller.  This adds instructions to save
> and restore CR at the points where we save and restore the nonvolatile
> GPRs.
>
> Signed-off-by: Paul Mackerras<paulus@samba.org>

Thanks, applied all to kvm-ppc-next. Please CC kvm@vger when you send 
patches. Failing to do so might mean the whole pull request gets blocked 
by Avi when it gets to him, because he doesn't read kvm-ppc@vger.


Alex


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

end of thread, other threads:[~2012-03-05 19:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-05 19:11 [PATCH 1/4] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry Alexander Graf
  -- strict thread matches above, loose matches on Subject: below --
2012-02-03 10:53 Paul Mackerras

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.