diff options
author | kmacy <kmacy@FreeBSD.org> | 2006-11-22 04:50:55 +0000 |
---|---|---|
committer | kmacy <kmacy@FreeBSD.org> | 2006-11-22 04:50:55 +0000 |
commit | 8ba312cbd0392a8e9236511ba0647b209920ec67 (patch) | |
tree | c851eeedd0b32efdd74b1c3ffe30345876a099a8 /sys | |
parent | 4fb247b873e5895a19bd53f13d5cc7710409a50f (diff) | |
download | FreeBSD-src-8ba312cbd0392a8e9236511ba0647b209920ec67.zip FreeBSD-src-8ba312cbd0392a8e9236511ba0647b209920ec67.tar.gz |
pmap_track_modified has been removed from other architectures -
likewise remove from sun4v
Diffstat (limited to 'sys')
-rw-r--r-- | sys/sun4v/include/pmap.h | 9 | ||||
-rw-r--r-- | sys/sun4v/sun4v/pmap.c | 20 | ||||
-rw-r--r-- | sys/sun4v/sun4v/tte.c | 15 |
3 files changed, 11 insertions, 33 deletions
diff --git a/sys/sun4v/include/pmap.h b/sys/sun4v/include/pmap.h index f69166d..ea40fdd 100644 --- a/sys/sun4v/include/pmap.h +++ b/sys/sun4v/include/pmap.h @@ -121,13 +121,4 @@ extern vm_offset_t virtual_avail; extern vm_offset_t virtual_end; extern vm_paddr_t msgbuf_phys; -static __inline int -pmap_track_modified(pmap_t pm, vm_offset_t va) -{ - if (pm == kernel_pmap) - return ((va < kmi.clean_sva) || (va >= kmi.clean_eva)); - else - return (1); -} - #endif /* !_MACHINE_PMAP_H_ */ diff --git a/sys/sun4v/sun4v/pmap.c b/sys/sun4v/sun4v/pmap.c index caec58c..9372fb8 100644 --- a/sys/sun4v/sun4v/pmap.c +++ b/sys/sun4v/sun4v/pmap.c @@ -331,8 +331,7 @@ retry: KASSERT((tte_data & VTD_SW_W), ("get_pv_entry: modified page not writable: va: %lx, tte: %lx", va, tte_data)); - if (pmap_track_modified(locked_pmap, va)) - vm_page_dirty(m); + vm_page_dirty(m); } pmap_invalidate_page(pmap, va, TRUE); @@ -1030,17 +1029,14 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, invlva = FALSE; if ((otte_data & ~(VTD_W|VTD_REF)) != tte_data) { - if (otte_data & VTD_V) { + if (otte_data & VTD_MANAGED) { if (otte_data & VTD_REF) { - if (otte_data & VTD_MANAGED) - vm_page_flag_set(om, PG_REFERENCED); + vm_page_flag_set(om, PG_REFERENCED); if (opa != pa) invlva = TRUE; } if (otte_data & VTD_W) { - if ((otte_data & VTD_MANAGED) && - pmap_track_modified(pmap, va)) - vm_page_dirty(om); + vm_page_dirty(om); #if 0 if ((prot & VM_PROT_WRITE) == 0) /* XXX double check */ #endif @@ -1686,7 +1682,7 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) m = PHYS_TO_VM_PAGE(TTE_GET_PA(otte_data)); vm_page_flag_set(m, PG_REFERENCED); } - if ((otte_data & VTD_W) && pmap_track_modified(pmap, tva)) { + if (otte_data & VTD_W) { m = PHYS_TO_VM_PAGE(TTE_GET_PA(otte_data)); vm_page_dirty(m); } @@ -1838,8 +1834,7 @@ pmap_remove_all(vm_page_t m) KASSERT((tte_data & VTD_SW_W), ("pmap_remove_all: modified page not writable: va: %lx, tte: %lx", pv->pv_va, tte_data)); - if (pmap_track_modified(pv->pv_pmap, pv->pv_va)) - vm_page_dirty(m); + vm_page_dirty(m); } pmap_invalidate_page(pv->pv_pmap, pv->pv_va, TRUE); @@ -1967,8 +1962,7 @@ pmap_remove_tte(pmap_t pmap, tte_t tte_data, vm_offset_t va) if (tte_data & VTD_MANAGED) { m = PHYS_TO_VM_PAGE(TTE_GET_PA(tte_data)); if (tte_data & VTD_W) { - if (pmap_track_modified(pmap, va)) - vm_page_dirty(m); + vm_page_dirty(m); } if (tte_data & VTD_REF) vm_page_flag_set(m, PG_REFERENCED); diff --git a/sys/sun4v/sun4v/tte.c b/sys/sun4v/sun4v/tte.c index 1325ac8..389b97d 100644 --- a/sys/sun4v/sun4v/tte.c +++ b/sys/sun4v/sun4v/tte.c @@ -68,14 +68,10 @@ tte_clear_phys_bit(vm_page_t m, uint64_t flags) */ TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { tte_t otte_data; - /* - * don't write protect pager mappings - */ - if (flags == VTD_SW_W) { - if (!pmap_track_modified(pv->pv_pmap, pv->pv_va)) - continue; + + if (flags == VTD_SW_W) flags = (VTD_SW_W|VTD_W); - } + otte_data = tte_hash_clear_bits(pv->pv_pmap->pm_hash, pv->pv_va, flags); if (otte_data & flags) { @@ -123,11 +119,8 @@ tte_clear_virt_bit(struct pmap *pmap, vm_offset_t va, uint64_t flags) { tte_t otte_data; - if (flags == VTD_SW_W) { - if (!pmap_track_modified(pmap, va)) - return; + if (flags == VTD_SW_W) flags = (VTD_SW_W|VTD_W); - } otte_data = tte_hash_clear_bits(pmap->pm_hash, va, flags); |