]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
arm64: Use last level TLBI for user pte changes
authorCatalin Marinas <catalin.marinas@arm.com>
Wed, 18 Mar 2015 11:28:06 +0000 (11:28 +0000)
committerWill Deacon <will.deacon@arm.com>
Tue, 28 Jul 2015 10:44:01 +0000 (11:44 +0100)
commit4150e50bf5f2171fbe7dfdbc7f2cdf44676b79a4
tree6c016c8cd4a70b019a17d0e58ea01a22c98dd846
parentda4e73303e448aa23b36249a85e239ca118ce941
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 285994a62c80 - "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>
arch/arm64/include/asm/tlb.h
arch/arm64/include/asm/tlbflush.h