projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d8e7345
)
powerpc/32s: Don't flush all TLBs when flushing one page
author
Christophe Leroy
<christophe.leroy@c-s.fr>
Sat, 1 Feb 2020 08:04:31 +0000
(08:04 +0000)
committer
Michael Ellerman
<mpe@ellerman.id.au>
Wed, 19 Feb 2020 11:46:08 +0000
(22:46 +1100)
When flushing any memory range, the flushing function
flushes all TLBs.
When (start) and (end - 1) are in the same memory page,
flush that page instead.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link:
https://lore.kernel.org/r/b30b2eae6960502eaf0d9e36c60820b839693c33.1580542939.git.christophe.leroy@c-s.fr
arch/powerpc/mm/book3s32/tlb.c
patch
|
blob
|
history
diff --git
a/arch/powerpc/mm/book3s32/tlb.c
b/arch/powerpc/mm/book3s32/tlb.c
index
2fcd321
..
724c049
100644
(file)
--- a/
arch/powerpc/mm/book3s32/tlb.c
+++ b/
arch/powerpc/mm/book3s32/tlb.c
@@
-79,11
+79,14
@@
static void flush_range(struct mm_struct *mm, unsigned long start,
int count;
unsigned int ctx = mm->context.id;
+ start &= PAGE_MASK;
if (!Hash) {
- _tlbia();
+ if (end - start <= PAGE_SIZE)
+ _tlbie(start);
+ else
+ _tlbia();
return;
}
- start &= PAGE_MASK;
if (start >= end)
return;
end = (end - 1) | ~PAGE_MASK;