All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org, Alexander Graf <agraf@suse.de>,
	Stuart Yoder <stuart.yoder@freescale.com>
Subject: Re: [PATCH] powerpc/booke: Eliminate rfi from exception entry path.
Date: Wed, 11 Jul 2012 10:36:50 +1000	[thread overview]
Message-ID: <1341967010.18850.19.camel@pasglop> (raw)
In-Reply-To: <20120711003454.GA22757@tyr.buserror.net>

On Tue, 2012-07-10 at 19:34 -0500, 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).

In fact, I wonder, what do we write into the MSR at this point that
wasn't already in it in BookE ? RI ? I wonder if we could get away
without the mtmsr alltogether...

Cheers,
Ben.

> Signed-off-by: Scott Wood <scottwood@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@h
>  	ori	r12,r12,reenable_mmu@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.
> +	 */
> +	mtmsr	r10
> +	mtctr	r11
> +	mtlr	r9
> +	bctr
> +#else
>  	mtspr	SPRN_SRR0,r11
>  	mtspr	SPRN_SRR1,r10
>  	mtlr	r9
>  	SYNC
>  	RFI				/* jump to handler, enable MMU */
> +#endif /* !CONFIG_BOOKE */
>  #endif /* CONFIG_TRACE_IRQFLAGS */
>  
>  #if defined (CONFIG_6xx) || defined(CONFIG_E500)

  reply	other threads:[~2012-07-11  0:36 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-11  0:34 [PATCH] powerpc/booke: Eliminate rfi from exception entry path Scott Wood
2012-07-11  0:36 ` Benjamin Herrenschmidt [this message]
2012-07-11  0:41   ` Scott Wood
2012-07-11  0:53     ` Benjamin Herrenschmidt
2012-07-11  0:44 ` Alexander Graf
2012-07-11  0:47   ` Scott Wood
2012-07-11  0:54     ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1341967010.18850.19.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=agraf@suse.de \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=scottwood@freescale.com \
    --cc=stuart.yoder@freescale.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.