On 03/05/2012 10:02 AM, Alexander Graf wrote:
> @@ -442,6 +444,7 @@ heavyweight_exit:
>  
>       /* Return to kvm_vcpu_run(). */
>       mtlr    r5
> +     mtcr    r6
>       addi    r1, r1, HOST_STACK_SIZE
>       /* r3 still contains the return code from kvmppc_handle_exit(). */
>       blr
> @@ -459,6 +462,9 @@ _GLOBAL(__kvmppc_vcpu_run)
>       mflr    r3
>       PPC_STL r3, HOST_STACK_LR(r1)
>  
> +     mfcr    r5
> +     stw     r5, HOST_CR(r1)

If you move the mfcr before the PPC_STL they should be able to run in
parallel.  Otherwise on e500mc mfcr will wait for PPC_STL to take its 3
cycles and then mfcr will take 5 cyles before the stw of HOST_CR.
Alternatively, consider using mcrf/mtocrf three times.

Similar issues in booke_interrupts.S (except we can't assume mtocrf
exists there), but I'm less worried about that one as it still needs an
optimization pass in general.

-Scott

--
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

Reply via email to