Message ID | 20120203105320.GC30287@bloggs.ozlabs.ibm.com |
---|---|
State | New, archived |
Headers | show |
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 -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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)
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(-)