summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2006-11-22 04:50:55 +0000
committerkmacy <kmacy@FreeBSD.org>2006-11-22 04:50:55 +0000
commit8ba312cbd0392a8e9236511ba0647b209920ec67 (patch)
treec851eeedd0b32efdd74b1c3ffe30345876a099a8 /sys
parent4fb247b873e5895a19bd53f13d5cc7710409a50f (diff)
downloadFreeBSD-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.h9
-rw-r--r--sys/sun4v/sun4v/pmap.c20
-rw-r--r--sys/sun4v/sun4v/tte.c15
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);
OpenPOWER on IntegriCloud