[PATCH kvm-unit-tests 2/2] arm/arm64: mmu: add missing TLB flushes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since 031755db "arm: enable vmalloc" the virtual addresses returned
from malloc and friends are no longer identical to the physical
addresses they map to. On some hardware the change exposes missing
TLB flushes. Let's get them added.

Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
---
 lib/arm/mmu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/arm/mmu.c b/lib/arm/mmu.c
index 21bcf3a363af..2e5c993f1e7f 100644
--- a/lib/arm/mmu.c
+++ b/lib/arm/mmu.c
@@ -86,6 +86,7 @@ static pteval_t *install_pte(pgd_t *pgtable, uintptr_t vaddr, pteval_t pte)
 {
 	pteval_t *p_pte = get_pte(pgtable, vaddr);
 	*p_pte = pte;
+	flush_tlb_page(vaddr);
 	return p_pte;
 }
 
@@ -136,9 +137,9 @@ void mmu_set_range_sect(pgd_t *pgtable, uintptr_t virt_offset,
 		pgd_val(*pgd) |= PMD_TYPE_SECT | PMD_SECT_AF | PMD_SECT_S;
 		pgd_val(*pgd) |= pgprot_val(prot);
 	}
+	flush_tlb_all();
 }
 
-
 void *setup_mmu(phys_addr_t phys_end)
 {
 	uintptr_t code_end = (uintptr_t)&etext;
-- 
2.13.6




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux