Page MenuHomeFreeBSD

D37302.id112734.diff
No OneTemporary

D37302.id112734.diff

diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c
--- a/sys/arm64/arm64/pmap.c
+++ b/sys/arm64/arm64/pmap.c
@@ -1445,7 +1445,7 @@
* Otherwise, just the cached final-level entry is invalidated.
*/
static __inline void
-pmap_invalidate_kernel(uint64_t r, bool final_only)
+pmap_s1_invalidate_kernel(uint64_t r, bool final_only)
{
if (final_only)
__asm __volatile("tlbi vaale1is, %0" : : "r" (r));
@@ -1454,7 +1454,7 @@
}
static __inline void
-pmap_invalidate_user(uint64_t r, bool final_only)
+pmap_s1_invalidate_user(uint64_t r, bool final_only)
{
if (final_only)
__asm __volatile("tlbi vale1is, %0" : : "r" (r));
@@ -1467,7 +1467,7 @@
* for the specified virtual address in the given virtual address space.
*/
static __inline void
-pmap_invalidate_page(pmap_t pmap, vm_offset_t va, bool final_only)
+pmap_s1_invalidate_page(pmap_t pmap, vm_offset_t va, bool final_only)
{
uint64_t r;
@@ -1476,10 +1476,10 @@
dsb(ishst);
r = TLBI_VA(va);
if (pmap == kernel_pmap) {
- pmap_invalidate_kernel(r, final_only);
+ pmap_s1_invalidate_kernel(r, final_only);
} else {
r |= ASID_TO_OPERAND(COOKIE_TO_ASID(pmap->pm_cookie));
- pmap_invalidate_user(r, final_only);
+ pmap_s1_invalidate_user(r, final_only);
}
dsb(ish);
isb();
@@ -1490,7 +1490,7 @@
* for the specified virtual address range in the given virtual address space.
*/
static __inline void
-pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva,
+pmap_s1_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva,
bool final_only)
{
uint64_t end, r, start;
@@ -1502,13 +1502,13 @@
start = TLBI_VA(sva);
end = TLBI_VA(eva);
for (r = start; r < end; r += TLBI_VA_L3_INCR)
- pmap_invalidate_kernel(r, final_only);
+ pmap_s1_invalidate_kernel(r, final_only);
} else {
start = end = ASID_TO_OPERAND(COOKIE_TO_ASID(pmap->pm_cookie));
start |= TLBI_VA(sva);
end |= TLBI_VA(eva);
for (r = start; r < end; r += TLBI_VA_L3_INCR)
- pmap_invalidate_user(r, final_only);
+ pmap_s1_invalidate_user(r, final_only);
}
dsb(ish);
isb();
@@ -1519,7 +1519,7 @@
* given virtual address space.
*/
static __inline void
-pmap_invalidate_all(pmap_t pmap)
+pmap_s1_invalidate_all(pmap_t pmap)
{
uint64_t r;
@@ -1767,7 +1767,7 @@
pa += PAGE_SIZE;
size -= PAGE_SIZE;
}
- pmap_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
}
void
@@ -1787,7 +1787,7 @@
pte = pmap_pte_exists(kernel_pmap, va, 3, __func__);
pmap_clear(pte);
- pmap_invalidate_page(kernel_pmap, va, true);
+ pmap_s1_invalidate_page(kernel_pmap, va, true);
}
void
@@ -1809,7 +1809,7 @@
va += PAGE_SIZE;
size -= PAGE_SIZE;
}
- pmap_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
}
/*
@@ -1865,7 +1865,7 @@
va += L3_SIZE;
}
- pmap_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
}
/*
@@ -1891,7 +1891,7 @@
va += PAGE_SIZE;
}
- pmap_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
}
/***************************************************
@@ -1979,7 +1979,7 @@
l1pg = PHYS_TO_VM_PAGE(tl0 & ~ATTR_MASK);
pmap_unwire_l3(pmap, va, l1pg, free);
}
- pmap_invalidate_page(pmap, va, false);
+ pmap_s1_invalidate_page(pmap, va, false);
/*
* Put page on a list so that it is released after
@@ -2649,7 +2649,7 @@
if (pmap_pte_dirty(pmap, tpte))
vm_page_dirty(m);
if ((tpte & ATTR_AF) != 0) {
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
vm_page_aflag_set(m, PGA_REFERENCED);
}
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
@@ -3179,9 +3179,9 @@
/*
* Since a promotion must break the 4KB page mappings before making
- * the 2MB page mapping, a pmap_invalidate_page() suffices.
+ * the 2MB page mapping, a pmap_s1_invalidate_page() suffices.
*/
- pmap_invalidate_page(pmap, sva, true);
+ pmap_s1_invalidate_page(pmap, sva, true);
if (old_l2 & ATTR_SW_WIRED)
pmap->pm_stats.wired_count -= L2_SIZE / PAGE_SIZE;
@@ -3231,7 +3231,7 @@
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
old_l3 = pmap_load_clear(l3);
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
if (old_l3 & ATTR_SW_WIRED)
pmap->pm_stats.wired_count -= 1;
pmap_resident_count_dec(pmap, 1);
@@ -3280,7 +3280,7 @@
for (l3 = pmap_l2_to_l3(&l2e, sva); sva != eva; l3++, sva += L3_SIZE) {
if (!pmap_l3_valid(pmap_load(l3))) {
if (va != eva) {
- pmap_invalidate_range(pmap, va, sva, true);
+ pmap_s1_invalidate_range(pmap, va, sva, true);
va = eva;
}
continue;
@@ -3307,7 +3307,7 @@
* still provides access to that page.
*/
if (va != eva) {
- pmap_invalidate_range(pmap, va,
+ pmap_s1_invalidate_range(pmap, va,
sva, true);
va = eva;
}
@@ -3338,7 +3338,7 @@
va = sva;
}
if (va != eva)
- pmap_invalidate_range(pmap, va, sva, true);
+ pmap_s1_invalidate_range(pmap, va, sva, true);
}
/*
@@ -3394,7 +3394,7 @@
MPASS(pmap != kernel_pmap);
MPASS((pmap_load(l1) & ATTR_SW_MANAGED) == 0);
pmap_clear(l1);
- pmap_invalidate_page(pmap, sva, true);
+ pmap_s1_invalidate_page(pmap, sva, true);
pmap_resident_count_dec(pmap, L1_SIZE / PAGE_SIZE);
pmap_unuse_pt(pmap, sva, pmap_load(l0), &free);
continue;
@@ -3525,7 +3525,7 @@
if (tpte & ATTR_SW_WIRED)
pmap->pm_stats.wired_count--;
if ((tpte & ATTR_AF) != 0) {
- pmap_invalidate_page(pmap, pv->pv_va, true);
+ pmap_s1_invalidate_page(pmap, pv->pv_va, true);
vm_page_aflag_set(m, PGA_REFERENCED);
}
@@ -3588,9 +3588,9 @@
/*
* Since a promotion must break the 4KB page mappings before making
- * the 2MB page mapping, a pmap_invalidate_page() suffices.
+ * the 2MB page mapping, a pmap_s1_invalidate_page() suffices.
*/
- pmap_invalidate_page(pmap, sva, true);
+ pmap_s1_invalidate_page(pmap, sva, true);
}
/*
@@ -3631,7 +3631,7 @@
if ((pmap_load(l1) & mask) != nbits) {
pmap_store(l1, (pmap_load(l1) & ~mask) | nbits);
if (invalidate)
- pmap_invalidate_page(pmap, sva, true);
+ pmap_s1_invalidate_page(pmap, sva, true);
}
continue;
}
@@ -3673,7 +3673,7 @@
if (!pmap_l3_valid(l3) || (l3 & mask) == nbits) {
if (va != va_next) {
if (invalidate)
- pmap_invalidate_range(pmap,
+ pmap_s1_invalidate_range(pmap,
va, sva, true);
va = va_next;
}
@@ -3697,7 +3697,7 @@
va = sva;
}
if (va != va_next && invalidate)
- pmap_invalidate_range(pmap, va, sva, true);
+ pmap_s1_invalidate_range(pmap, va, sva, true);
}
PMAP_UNLOCK(pmap);
}
@@ -3810,7 +3810,7 @@
* be cached, so we invalidate intermediate entries as well as final
* entries.
*/
- pmap_invalidate_range(pmap, va, va + size, false);
+ pmap_s1_invalidate_range(pmap, va, va + size, false);
/* Create the new mapping */
pmap_store(pte, newpte);
@@ -4266,7 +4266,7 @@
if (pmap_pte_dirty(pmap, orig_l3))
vm_page_dirty(om);
if ((orig_l3 & ATTR_AF) != 0) {
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
vm_page_aflag_set(om, PGA_REFERENCED);
}
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, opa);
@@ -4281,7 +4281,7 @@
} else {
KASSERT((orig_l3 & ATTR_AF) != 0,
("pmap_enter: unmanaged mapping lacks ATTR_AF"));
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
}
orig_l3 = 0;
} else {
@@ -4339,7 +4339,7 @@
if ((orig_l3 & ~ATTR_AF) != (new_l3 & ~ATTR_AF)) {
/* same PA, different attributes */
orig_l3 = pmap_load_store(l3, new_l3);
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
if ((orig_l3 & ATTR_SW_MANAGED) != 0 &&
pmap_pte_dirty(pmap, orig_l3))
vm_page_dirty(m);
@@ -4525,7 +4525,7 @@
if (pmap_insert_pt_page(pmap, mt, false))
panic("pmap_enter_l2: trie insert failed");
pmap_clear(l2);
- pmap_invalidate_page(pmap, va, false);
+ pmap_s1_invalidate_page(pmap, va, false);
}
}
@@ -5482,7 +5482,7 @@
}
if (lock != NULL)
rw_wunlock(lock);
- pmap_invalidate_all(pmap);
+ pmap_s1_invalidate_all(pmap);
free_pv_chunk_batch(free_chunks);
PMAP_UNLOCK(pmap);
vm_page_free_pages_toq(&free, true);
@@ -5709,7 +5709,7 @@
if ((oldpte & ATTR_S1_AP_RW_BIT) ==
ATTR_S1_AP(ATTR_S1_AP_RW))
vm_page_dirty(m);
- pmap_invalidate_page(pmap, pv->pv_va, true);
+ pmap_s1_invalidate_page(pmap, pv->pv_va, true);
}
PMAP_UNLOCK(pmap);
}
@@ -5807,7 +5807,7 @@
(uintptr_t)pmap) & (Ln_ENTRIES - 1)) == 0 &&
(tpte & ATTR_SW_WIRED) == 0) {
pmap_clear_bits(pte, ATTR_AF);
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
cleared++;
} else
not_cleared++;
@@ -5848,7 +5848,7 @@
if ((tpte & ATTR_AF) != 0) {
if ((tpte & ATTR_SW_WIRED) == 0) {
pmap_clear_bits(pte, ATTR_AF);
- pmap_invalidate_page(pmap, pv->pv_va, true);
+ pmap_s1_invalidate_page(pmap, pv->pv_va, true);
cleared++;
} else
not_cleared++;
@@ -5988,12 +5988,12 @@
continue;
maybe_invlrng:
if (va != va_next) {
- pmap_invalidate_range(pmap, va, sva, true);
+ pmap_s1_invalidate_range(pmap, va, sva, true);
va = va_next;
}
}
if (va != va_next)
- pmap_invalidate_range(pmap, va, sva, true);
+ pmap_s1_invalidate_range(pmap, va, sva, true);
}
PMAP_UNLOCK(pmap);
}
@@ -6054,7 +6054,7 @@
(oldl3 & ~ATTR_SW_DBM) | ATTR_S1_AP(ATTR_S1_AP_RO)))
cpu_spinwait();
vm_page_dirty(m);
- pmap_invalidate_page(pmap, va, true);
+ pmap_s1_invalidate_page(pmap, va, true);
}
PMAP_UNLOCK(pmap);
}
@@ -6077,7 +6077,7 @@
oldl3 = pmap_load(l3);
if ((oldl3 & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) == ATTR_SW_DBM){
pmap_set_bits(l3, ATTR_S1_AP(ATTR_S1_AP_RO));
- pmap_invalidate_page(pmap, pv->pv_va, true);
+ pmap_s1_invalidate_page(pmap, pv->pv_va, true);
}
PMAP_UNLOCK(pmap);
}
@@ -6166,7 +6166,7 @@
va += L2_SIZE;
pa += L2_SIZE;
}
- pmap_invalidate_all(kernel_pmap);
+ pmap_s1_invalidate_all(kernel_pmap);
va = preinit_map_va + (start_idx * L2_SIZE);
@@ -6235,7 +6235,7 @@
}
}
if (preinit_map) {
- pmap_invalidate_all(kernel_pmap);
+ pmap_s1_invalidate_all(kernel_pmap);
return;
}
@@ -7245,7 +7245,7 @@
if ((pte & ATTR_S1_AP_RW_BIT) ==
ATTR_S1_AP(ATTR_S1_AP_RO)) {
pmap_clear_bits(ptep, ATTR_S1_AP_RW_BIT);
- pmap_invalidate_page(pmap, far, true);
+ pmap_s1_invalidate_page(pmap, far, true);
}
rv = KERN_SUCCESS;
}

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 27, 1:22 PM (12 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29031121
Default Alt Text
D37302.id112734.diff (10 KB)

Event Timeline