Re: [PATCH 1/4] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry

2012-03-05 Thread Alexander Graf

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 Mackerraspau...@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

--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/4] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry

2012-02-03 Thread Paul Mackerras
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 pau...@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 */
stdur1, -SWITCH_FRAME_SIZE(r1)
 
-   /* Save non-volatile registers (r14 - r31) */
+   /* Save non-volatile registers (r14 - r31) and CR */
SAVE_NVGPRS(r1)
+   mfcrr3
+   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)
+   mtcrr4
 
addir1, r1, SWITCH_FRAME_SIZE
ld  r0, PPC_LR_STKOFF(r1)
-- 
1.7.8.3

--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html