Commit febe4296 authored by John David Anglin's avatar John David Anglin Committed by Helge Deller

parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm

We have four routines in pacache.S that use temporary alias pages:
copy_user_page_asm(), clear_user_page_asm(), flush_dcache_page_asm() and
flush_icache_page_asm().  copy_user_page_asm() and clear_user_page_asm()
don't purge the TLB entry used for the operation.
flush_dcache_page_asm() and flush_icache_page_asm do purge the entry.

Presumably, this was thought to optimize TLB use.  However, the
operation is quite heavy weight on PA 1.X processors as we need to take
the TLB lock and a TLB broadcast is sent to all processors.

This patch removes the purges from flush_dcache_page_asm() and
flush_icache_page_asm.
Signed-off-by: default avatarJohn David Anglin  <dave.anglin@bell.net>
Cc: <stable@vger.kernel.org> # v3.16+
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent c78e710c
...@@ -892,19 +892,10 @@ ENTRY_CFI(flush_dcache_page_asm) ...@@ -892,19 +892,10 @@ ENTRY_CFI(flush_dcache_page_asm)
fdc,m r31(%r28) fdc,m r31(%r28)
fdc,m r31(%r28) fdc,m r31(%r28)
fdc,m r31(%r28) fdc,m r31(%r28)
cmpb,COND(<<) %r28, %r25,1b cmpb,COND(<<) %r28, %r25,1b
fdc,m r31(%r28) fdc,m r31(%r28)
sync sync
#ifdef CONFIG_PA20
pdtlb,l %r0(%r25)
#else
tlb_lock %r20,%r21,%r22
pdtlb %r0(%r25)
tlb_unlock %r20,%r21,%r22
#endif
bv %r0(%r2) bv %r0(%r2)
nop nop
.exit .exit
...@@ -979,17 +970,6 @@ ENTRY_CFI(flush_icache_page_asm) ...@@ -979,17 +970,6 @@ ENTRY_CFI(flush_icache_page_asm)
fic,m %r31(%sr4,%r28) fic,m %r31(%sr4,%r28)
sync sync
#ifdef CONFIG_PA20
pdtlb,l %r0(%r28)
pitlb,l %r0(%sr4,%r25)
#else
tlb_lock %r20,%r21,%r22
pdtlb %r0(%r28)
pitlb %r0(%sr4,%r25)
tlb_unlock %r20,%r21,%r22
#endif
bv %r0(%r2) bv %r0(%r2)
nop nop
.exit .exit
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment