[PATCH] powerpc/booke: Eliminate rfi from exception entry path.
Alexander Graf
agraf at suse.de
Wed Jul 11 10:44:52 EST 2012
On 11.07.2012, at 02:34, Scott Wood wrote:
> Unlike classic, we don't really need the MSR change to be atomic with the
> branch. This eliminates a trap as a KVM guest (in the absence of
> hardware hypervisor extensions), where mtmsr is paravirtualized but rfi
> is not. For a virtualized guest without any paravirtualization, this
> eliminates an additional two traps (SRR0/1).
>
> Signed-off-by: Scott Wood <scottwood at freescale.com>
> ---
> arch/powerpc/kernel/entry_32.S | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
> index ba3aeb4..6bb637c 100644
> --- a/arch/powerpc/kernel/entry_32.S
> +++ b/arch/powerpc/kernel/entry_32.S
> @@ -193,6 +193,9 @@ transfer_to_handler_cont:
> lwz r11,0(r9) /* virtual address of handler */
> lwz r9,4(r9) /* where to go when done */
> #ifdef CONFIG_TRACE_IRQFLAGS
> +#ifdef CONFIG_BOOKE
> + mtmsr r10
> +#else
> lis r12,reenable_mmu at h
> ori r12,r12,reenable_mmu at l
> mtspr SPRN_SRR0,r12
> @@ -201,6 +204,7 @@ transfer_to_handler_cont:
> RFI
> reenable_mmu: /* re-enable mmu so we can */
> mfmsr r10
> +#endif /* !CONFIG_BOOKE */
> lwz r12,_MSR(r1)
> xor r10,r10,r12
> andi. r10,r10,MSR_EE /* Did EE change? */
> @@ -247,11 +251,23 @@ reenable_mmu: /* re-enable mmu so we can */
> mtlr r9
> bctr /* jump to handler */
> #else /* CONFIG_TRACE_IRQFLAGS */
> +#ifdef CONFIG_BOOKE
> + /*
> + * We're not changing address space on Book E, and the extra rfi
> + * can hurt when virtualized without hardware support -- whereas
> + * mtmsr can be paravirtualized.
We can always paravirtualize RFI as well if it makes sense.
Alex
More information about the Linuxppc-dev
mailing list