linux/arch
Catalin Marinas 4150e50bf5 arm64: Use last level TLBI for user pte changes
The flush_tlb_page() function is used on user address ranges when PTEs
(or PMDs/PUDs for huge pages) were changed (attributes or clearing). For
such cases, it is more efficient to invalidate only the last level of
the TLB with the "tlbi vale1is" instruction.

In the TLB shoot-down case, the TLB caching of the intermediate page
table levels (pmd, pud, pgd) is handled by __flush_tlb_pgtable() via the
__(pte|pmd|pud)_free_tlb() functions and it is not deferred to
tlb_finish_mmu() (as of commit 285994a62c - "arm64: Invalidate the TLB
corresponding to intermediate page table levels"). The tlb_flush()
function only needs to invalidate the TLB for the last level of page
tables; the __flush_tlb_range() function gains a fourth argument for
last level TLBI.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2015-07-28 11:44:01 +01:00
..
alpha atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
arc atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
arm atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
arm64 arm64: Use last level TLBI for user pte changes 2015-07-28 11:44:01 +01:00
avr32 atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
blackfin atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
c6x mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
cris mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
frv atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
h8300 atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
hexagon atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
ia64 atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
m32r atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
m68k atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
metag atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
microblaze mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
mips atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
mn10300 atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
nios2 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
openrisc mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
parisc atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
powerpc atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
s390 atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
score mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
sh atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
sparc atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
tile atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
um mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
unicore32 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
x86 atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
xtensa atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
.gitignore
Kconfig x86/fpu, sched: Introduce CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT and use it on x86 2015-07-18 03:42:51 +02:00