linux/arch/arm64
Catalin Marinas e9ab6db096 arm64: Invalidate the TLB corresponding to intermediate page table levels
[ Upstream commit 285994a62c ]

The ARM architecture allows the caching of intermediate page table
levels and page table freeing requires a sequence like:

	pmd_clear()
	TLB invalidation
	pte page freeing

With commit 5e5f6dc105 (arm64: mm: enable HAVE_RCU_TABLE_FREE logic),
the page table freeing batching was moved from tlb_remove_page() to
tlb_remove_table(). The former takes care of TLB invalidation as this is
also shared with pte clearing and page cache page freeing. The latter,
however, does not invalidate the TLBs for intermediate page table levels
as it probably relies on the architecture code to do it if required.
When the mm->mm_users < 2, tlb_remove_table() does not do any batching
and page table pages are freed before tlb_finish_mmu() which performs
the actual TLB invalidation.

This patch introduces __tlb_flush_pgtable() for arm64 and calls it from
the {pte,pmd,pud}_free_tlb() directly without relying on deferred page
table freeing.

Fixes: 5e5f6dc105 arm64: mm: enable HAVE_RCU_TABLE_FREE logic
Reported-by: Jon Masters <jcm@redhat.com>
Tested-by: Jon Masters <jcm@redhat.com>
Tested-by: Steve Capper <steve.capper@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-03-28 09:22:42 -04:00
..
boot dtb: xgene: fix: Backward compatibility with older firmware 2014-11-04 17:08:42 -05:00
configs arm64: defconfig: update defconfig for 3.18 2014-11-05 17:07:58 +00:00
crypto crypto: prefix module autoloading with "crypto-" 2015-01-29 17:40:46 -08:00
include arm64: Invalidate the TLB corresponding to intermediate page table levels 2015-03-28 09:22:42 -04:00
kernel arm64: compat Fix siginfo_t -> compat_siginfo_t conversion on big endian 2015-03-06 14:53:03 -08:00
kvm arm64: KVM: Handle traps of ICC_SRE_EL1 as RAZ/WI 2014-11-26 14:40:43 +01:00
lib arm64: __clear_user: handle exceptions on strb 2014-11-13 15:21:26 +00:00
mm arm64: Honor __GFP_ZERO in dma allocations 2015-03-28 09:20:39 -04:00
net arm64: bpf: lift restriction on last instruction 2015-01-08 10:30:20 -08:00
xen arm: xen: implement multicall hypercall support. 2014-04-24 13:09:46 +01:00
Kconfig arm64: ASLR: Don't randomise text when randomise_va_space == 0 2014-10-24 15:47:49 +01:00
Kconfig.debug arm64: Add CONFIG_DEBUG_SET_MODULE_RONX support 2014-09-08 14:39:18 +01:00
Makefile Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-10-14 09:22:26 +02:00