From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 6/7] powerpc/mm: 64-bit: tlb handler micro-optimization
Date: Thu, 19 May 2011 07:37:47 +1000 [thread overview]
Message-ID: <1305754667.7481.5.camel@pasglop> (raw)
In-Reply-To: <20110518210536.GE29524@schlenkerla.am.freescale.net>
On Wed, 2011-05-18 at 16:05 -0500, Scott Wood wrote:
> A little more speed up measured on e5500.
>
> Setting of U0-3 is dropped as it is not used by Linux as far as I can
> see.
Please keep them for now. If your core doesn't have them, make them an
MMU feature.
Cheers,
Ben.
> Signed-off-by: Scott Wood <scottwood@freescale.com>
> ---
> arch/powerpc/mm/tlb_low_64e.S | 21 ++++++++-------------
> 1 files changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/arch/powerpc/mm/tlb_low_64e.S b/arch/powerpc/mm/tlb_low_64e.S
> index e782023..a94c87b 100644
> --- a/arch/powerpc/mm/tlb_low_64e.S
> +++ b/arch/powerpc/mm/tlb_low_64e.S
> @@ -47,10 +47,10 @@
> * We could probably also optimize by not saving SRR0/1 in the
> * linear mapping case but I'll leave that for later
> */
> - mfspr r14,SPRN_ESR
> mfspr r16,SPRN_DEAR /* get faulting address */
> srdi r15,r16,60 /* get region */
> cmpldi cr0,r15,0xc /* linear mapping ? */
> + mfspr r14,SPRN_ESR
> TLB_MISS_STATS_SAVE_INFO
> beq tlb_load_linear /* yes -> go to linear map load */
>
> @@ -62,11 +62,11 @@
> andi. r10,r15,0x1
> bne- virt_page_table_tlb_miss
>
> - std r14,EX_TLB_ESR(r12); /* save ESR */
> - std r16,EX_TLB_DEAR(r12); /* save DEAR */
> + /* We need _PAGE_PRESENT and _PAGE_ACCESSED set */
>
> - /* We need _PAGE_PRESENT and _PAGE_ACCESSED set */
> + std r14,EX_TLB_ESR(r12); /* save ESR */
> li r11,_PAGE_PRESENT
> + std r16,EX_TLB_DEAR(r12); /* save DEAR */
> oris r11,r11,_PAGE_ACCESSED@h
>
> /* We do the user/kernel test for the PID here along with the RW test
> @@ -225,21 +225,16 @@ finish_normal_tlb_miss:
> * yet implemented for now
> * MAS 2 : Defaults not useful, need to be redone
> * MAS 3+7 : Needs to be done
> - *
> - * TODO: mix up code below for better scheduling
> */
> clrrdi r11,r16,12 /* Clear low crap in EA */
> + rldicr r15,r14,64-(PTE_RPN_SHIFT-PAGE_SHIFT),63-PAGE_SHIFT
> rlwimi r11,r14,32-19,27,31 /* Insert WIMGE */
> + clrldi r15,r15,12 /* Clear crap at the top */
> mtspr SPRN_MAS2,r11
> -
> - /* Move RPN in position */
> - rldicr r11,r14,64-(PTE_RPN_SHIFT-PAGE_SHIFT),63-PAGE_SHIFT
> - clrldi r15,r11,12 /* Clear crap at the top */
> - rlwimi r15,r14,32-8,22,25 /* Move in U bits */
> + andi. r11,r14,_PAGE_DIRTY
> rlwimi r15,r14,32-2,26,31 /* Move in BAP bits */
>
> /* Mask out SW and UW if !DIRTY (XXX optimize this !) */
> - andi. r11,r14,_PAGE_DIRTY
> bne 1f
> li r11,MAS3_SW|MAS3_UW
> andc r15,r15,r11
> @@ -483,10 +478,10 @@ virt_page_table_tlb_miss_whacko_fault:
> * We could probably also optimize by not saving SRR0/1 in the
> * linear mapping case but I'll leave that for later
> */
> - mfspr r14,SPRN_ESR
> mfspr r16,SPRN_DEAR /* get faulting address */
> srdi r11,r16,60 /* get region */
> cmpldi cr0,r11,0xc /* linear mapping ? */
> + mfspr r14,SPRN_ESR
> TLB_MISS_STATS_SAVE_INFO
> beq tlb_load_linear /* yes -> go to linear map load */
>
next prev parent reply other threads:[~2011-05-18 21:37 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-18 21:04 [PATCH 1/7] powerpc/mm: 64-bit 4k: use page-sized PMDs Scott Wood
2011-05-18 21:05 ` [PATCH 2/7] powerpc/mm: 64-bit 4k: use a PMD-based virtual page table Scott Wood
2011-05-18 21:33 ` Benjamin Herrenschmidt
2011-05-20 20:57 ` Scott Wood
2011-05-20 22:15 ` Benjamin Herrenschmidt
2011-05-23 18:54 ` Scott Wood
2011-05-23 20:51 ` Benjamin Herrenschmidt
2011-05-23 23:31 ` Scott Wood
2011-05-24 2:52 ` Benjamin Herrenschmidt
2011-05-18 21:05 ` [PATCH 3/7] powerpc/mm: 64-bit tlb miss: get PACA from memory rather than SPR Scott Wood
2011-05-18 21:05 ` [PATCH 4/7] powerpc/mm: 64-bit: Don't load PACA in normal TLB miss exceptions Scott Wood
2011-05-18 21:05 ` [PATCH 5/7] powerpc/mm: 64-bit: don't handle non-standard page sizes Scott Wood
2011-05-18 21:36 ` Benjamin Herrenschmidt
2011-05-18 21:50 ` Scott Wood
2011-05-18 21:54 ` Benjamin Herrenschmidt
2011-05-18 21:05 ` [PATCH 6/7] powerpc/mm: 64-bit: tlb handler micro-optimization Scott Wood
2011-05-18 21:37 ` Benjamin Herrenschmidt [this message]
2011-05-18 21:51 ` Scott Wood
2011-05-18 21:54 ` Benjamin Herrenschmidt
2011-05-18 22:27 ` Scott Wood
2011-05-18 21:05 ` [PATCH 7/7] powerpc/e5500: set MMU_FTR_USE_PAIRED_MAS Scott Wood
2011-05-18 21:38 ` Benjamin Herrenschmidt
2011-05-18 21:52 ` Scott Wood
2011-05-18 21:58 ` Benjamin Herrenschmidt
2011-05-18 21:32 ` [PATCH 1/7] powerpc/mm: 64-bit 4k: use page-sized PMDs Benjamin Herrenschmidt
2011-05-18 21:46 ` Scott Wood
2011-05-18 21:52 ` 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=1305754667.7481.5.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=scottwood@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.