Hi all,

Justification for removing this code:

1) This is currently dead code, UVM_PAGE_TRKOWN is undefined in GENERIC on all 
arches. If it is dead, while reading it gives incorrect impression that this 
code is useful.

2) The comment for uvm_page_own() mentions tracking down problems in PG_BUSY 
flag, but the usage is incorrect in this instance
        When you do a atomic_setbits_int() and pass in a UVM_PAGE_OWN(ptmp, 
NULL) in line 1061 @ uvm_aobj.c, when you are unlocking there should be a 
previous call to atomic_clearbits_int(struct, PG_BUSY). This is the usual usage 
in other instances. This threw me off, and led me to figure out this is dead 
code.

Please review and comment.
Thanks in advance for your time!


diff --git sys/uvm/uvm.h sys/uvm/uvm.h
index 3e765a66226..29a31892c29 100644
--- sys/uvm/uvm.h
+++ sys/uvm/uvm.h
@@ -115,16 +115,6 @@ do {                                                       
                \
        tsleep(event, PVM|(intr ? PCATCH : 0), msg, timo);              \
 } while (0)
 
-/*
- * UVM_PAGE_OWN: track page ownership (only if UVM_PAGE_TRKOWN)
- */
-
-#if defined(UVM_PAGE_TRKOWN)
-#define UVM_PAGE_OWN(PG, TAG) uvm_page_own(PG, TAG)
-#else
-#define UVM_PAGE_OWN(PG, TAG) /* nothing */
-#endif /* UVM_PAGE_TRKOWN */
-
 /*
  * uvm_map internal functions.
  * Used by uvm_map address selectors.
diff --git sys/uvm/uvm_amap.c sys/uvm/uvm_amap.c
index 5cf15f24317..63d67c4b770 100644
--- sys/uvm/uvm_amap.c
+++ sys/uvm/uvm_amap.c
@@ -719,7 +719,6 @@ ReStart:
                         * PG_RELEASED | PG_WANTED.
                         */
                        atomic_clearbits_int(&npg->pg_flags, PG_BUSY|PG_FAKE);
-                       UVM_PAGE_OWN(npg, NULL);
                        uvm_lock_pageq();
                        uvm_pageactivate(npg);
                        uvm_unlock_pageq();
diff --git sys/uvm/uvm_aobj.c sys/uvm/uvm_aobj.c
index 63e6c993fc2..73d7e16b041 100644
--- sys/uvm/uvm_aobj.c
+++ sys/uvm/uvm_aobj.c
@@ -1061,7 +1061,6 @@ uao_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                                            PG_BUSY|PG_FAKE);
                                        atomic_setbits_int(&ptmp->pg_flags,
                                            PQ_AOBJ);
-                                       UVM_PAGE_OWN(ptmp, NULL);
                                }
                        }
 
@@ -1081,7 +1080,6 @@ uao_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                         */
                        /* caller must un-busy this page */
                        atomic_setbits_int(&ptmp->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(ptmp, "uao_get1");
                        pps[lcv] = ptmp;
                        gotpages++;
 
@@ -1178,7 +1176,6 @@ uao_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                         */
                        /* we own it, caller must un-busy */
                        atomic_setbits_int(&ptmp->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(ptmp, "uao_get2");
                        pps[lcv] = ptmp;
                }
 
@@ -1219,7 +1216,6 @@ uao_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                                        wakeup(ptmp);
                                atomic_clearbits_int(&ptmp->pg_flags,
                                    PG_WANTED|PG_BUSY);
-                               UVM_PAGE_OWN(ptmp, NULL);
                                uvm_lock_pageq();
                                uvm_pagefree(ptmp);
                                uvm_unlock_pageq();
@@ -1436,7 +1432,6 @@ uao_pagein_page(struct uvm_aobj *aobj, int pageidx)
        slot = uao_set_swslot(&aobj->u_obj, pageidx, 0);
        uvm_swap_free(slot, 1);
        atomic_clearbits_int(&pg->pg_flags, PG_BUSY|PG_CLEAN|PG_FAKE);
-       UVM_PAGE_OWN(pg, NULL);
 
        /* deactivate the page (to put it on a page queue). */
        pmap_clear_reference(pg);
diff --git sys/uvm/uvm_fault.c sys/uvm/uvm_fault.c
index 635283fac7b..4302bed85a8 100644
--- sys/uvm/uvm_fault.c
+++ sys/uvm/uvm_fault.c
@@ -356,7 +356,6 @@ uvmfault_anonget(struct uvm_faultinfo *ufi, struct vm_amap 
*amap,
                        /* un-busy! */
                        atomic_clearbits_int(&pg->pg_flags,
                            PG_WANTED|PG_BUSY|PG_FAKE);
-                       UVM_PAGE_OWN(pg, NULL);
 
                        /* 
                         * if we were RELEASED during I/O, then our anon is
@@ -801,7 +800,6 @@ ReFault:
                                 */
                                atomic_clearbits_int(&pages[lcv]->pg_flags,
                                    PG_BUSY);
-                               UVM_PAGE_OWN(pages[lcv], NULL);
                        }       /* for "lcv" loop */
                        pmap_update(ufi.orig_map->pmap);
                }   /* "gotpages" != 0 */
@@ -908,7 +906,6 @@ ReFault:
                uvm_pagecopy(oanon->an_page, pg);       /* pg now !PG_CLEAN */
                /* un-busy! new page */
                atomic_clearbits_int(&pg->pg_flags, PG_BUSY|PG_FAKE);
-               UVM_PAGE_OWN(pg, NULL);
                ret = amap_add(&ufi.entry->aref,
                    ufi.orig_rvaddr - ufi.entry->start, anon, 1);
                KASSERT(ret == 0);
@@ -1065,7 +1062,6 @@ Case2:
                                wakeup(uobjpage);
                        atomic_clearbits_int(&uobjpage->pg_flags,
                            PG_BUSY|PG_WANTED);
-                       UVM_PAGE_OWN(uobjpage, NULL);
                        goto ReFault;
                }
 
@@ -1134,7 +1130,6 @@ Case2:
                                        wakeup(uobjpage);
                                atomic_clearbits_int(&uobjpage->pg_flags,
                                    PG_BUSY|PG_WANTED);
-                               UVM_PAGE_OWN(uobjpage, NULL);
                        }
 
                        /* unlock and fail ... */
@@ -1177,7 +1172,6 @@ Case2:
                                wakeup(uobjpage);
                        atomic_clearbits_int(&uobjpage->pg_flags,
                            PG_BUSY|PG_WANTED);
-                       UVM_PAGE_OWN(uobjpage, NULL);
                        uvm_lock_pageq();
                        uvm_pageactivate(uobjpage);
                        uvm_unlock_pageq();
@@ -1225,7 +1219,6 @@ Case2:
                        wakeup(pg);
 
                atomic_clearbits_int(&pg->pg_flags, PG_BUSY|PG_FAKE|PG_WANTED);
-               UVM_PAGE_OWN(pg, NULL);
                uvmfault_unlockall(&ufi, amap, uobj, NULL);
                KASSERT(uvmexp.swpgonly <= uvmexp.swpages);
                if (uvmexp.swpgonly == uvmexp.swpages) {
@@ -1261,7 +1254,6 @@ Case2:
                wakeup(pg);
 
        atomic_clearbits_int(&pg->pg_flags, PG_BUSY|PG_FAKE|PG_WANTED);
-       UVM_PAGE_OWN(pg, NULL);
        uvmfault_unlockall(&ufi, amap, uobj, NULL);
        pmap_update(ufi.orig_map->pmap);
 
diff --git sys/uvm/uvm_km.c sys/uvm/uvm_km.c
index c65cf203ace..232d795317f 100644
--- sys/uvm/uvm_km.c
+++ sys/uvm/uvm_km.c
@@ -378,7 +378,6 @@ uvm_km_kmemalloc_pla(struct vm_map *map, struct uvm_object 
*obj, vsize_t size,
                TAILQ_REMOVE(&pgl, pg, pageq);
                uvm_pagealloc_pg(pg, obj, offset, NULL);
                atomic_clearbits_int(&pg->pg_flags, PG_BUSY);
-               UVM_PAGE_OWN(pg, NULL);
 
                /*
                 * map it in: note that we call pmap_enter with the map and
@@ -467,7 +466,6 @@ uvm_km_alloc1(struct vm_map *map, vsize_t size, vsize_t 
align, boolean_t zeroit)
                pg = uvm_pagealloc(uvm.kernel_object, offset, NULL, 0);
                if (pg) {
                        atomic_clearbits_int(&pg->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(pg, NULL);
                }
                if (__predict_false(pg == NULL)) {
                        if (curproc == uvm.pagedaemon_proc) {
diff --git sys/uvm/uvm_map.c sys/uvm/uvm_map.c
index c8a814d8e3c..f812acc891a 100644
--- sys/uvm/uvm_map.c
+++ sys/uvm/uvm_map.c
@@ -3095,15 +3095,6 @@ uvm_page_printit(pg, full, pr)
            (long long)pg->phys_addr);
        (*pr)("  uobject=%p, uanon=%p, offset=0x%llx\n",
            pg->uobject, pg->uanon, (long long)pg->offset);
-#if defined(UVM_PAGE_TRKOWN)
-       if (pg->pg_flags & PG_BUSY)
-               (*pr)("  owning thread = %d, tag=%s",
-                   pg->owner, pg->owner_tag);
-       else
-               (*pr)("  page not busy, no owner");
-#else
-       (*pr)("  [page ownership tracking disabled]");
-#endif
        (*pr)("\tvm_page_md %p\n", &pg->mdpage);
 
        if (!full)
diff --git sys/uvm/uvm_page.c sys/uvm/uvm_page.c
index 4fa266c020b..eb10af886c9 100644
--- sys/uvm/uvm_page.c
+++ sys/uvm/uvm_page.c
@@ -692,10 +692,6 @@ uvm_pagealloc_pg(struct vm_page *pg, struct uvm_object 
*obj, voff_t off,
        } else if (obj)
                uvm_pageinsert(pg);
        atomic_setbits_int(&pg->pg_flags, flags);
-#if defined(UVM_PAGE_TRKOWN)
-       pg->owner_tag = NULL;
-#endif
-       UVM_PAGE_OWN(pg, "new alloc");
 }
 
 /*
@@ -1064,52 +1060,14 @@ uvm_page_unbusy(struct vm_page **pgs, int npgs)
                                uvm_unlock_pageq();
                        } else {
                                atomic_clearbits_int(&pg->pg_flags, PG_BUSY);
-                               UVM_PAGE_OWN(pg, NULL);
                                uvm_anfree(pg->uanon);
                        }
                } else {
                        atomic_clearbits_int(&pg->pg_flags, PG_WANTED|PG_BUSY);
-                       UVM_PAGE_OWN(pg, NULL);
                }
        }
 }
 
-#if defined(UVM_PAGE_TRKOWN)
-/*
- * uvm_page_own: set or release page ownership
- *
- * => this is a debugging function that keeps track of who sets PG_BUSY
- *     and where they do it.   it can be used to track down problems
- *     such a thread setting "PG_BUSY" and never releasing it.
- * => if "tag" is NULL then we are releasing page ownership
- */
-void
-uvm_page_own(struct vm_page *pg, char *tag)
-{
-       /* gain ownership? */
-       if (tag) {
-               if (pg->owner_tag) {
-                       printf("uvm_page_own: page %p already owned "
-                           "by thread %d [%s]\n", pg,
-                            pg->owner, pg->owner_tag);
-                       panic("uvm_page_own");
-               }
-               pg->owner = (curproc) ? curproc->p_tid :  (pid_t) -1;
-               pg->owner_tag = tag;
-               return;
-       }
-
-       /* drop ownership */
-       if (pg->owner_tag == NULL) {
-               printf("uvm_page_own: dropping ownership of an non-owned "
-                   "page (%p)\n", pg);
-               panic("uvm_page_own");
-       }
-       pg->owner_tag = NULL;
-       return;
-}
-#endif
-
 /*
  * when VM_PHYSSEG_MAX is 1, we can simplify these functions
  */
diff --git sys/uvm/uvm_page.h sys/uvm/uvm_page.h
index 6ea58655b01..acb2fafbb3a 100644
--- sys/uvm/uvm_page.h
+++ sys/uvm/uvm_page.h
@@ -109,12 +109,6 @@ struct vm_page {
        psize_t                 fpgsz;          /* free page range size */
 
        struct vm_page_md       mdpage;         /* pmap-specific data */
-
-#if defined(UVM_PAGE_TRKOWN)
-       /* debugging fields to track page ownership */
-       pid_t                   owner;          /* thread that set PG_BUSY */
-       char                    *owner_tag;     /* why it was set busy */
-#endif
 };
 
 /*
@@ -216,9 +210,6 @@ extern int vm_nphysseg;
  */
 
 void           uvm_page_init(vaddr_t *, vaddr_t *);
-#if defined(UVM_PAGE_TRKOWN)
-void           uvm_page_own(struct vm_page *, char *);
-#endif
 #if !defined(PMAP_STEAL_MEMORY)
 boolean_t      uvm_page_physget(paddr_t *);
 #endif
diff --git sys/uvm/uvm_pager.c sys/uvm/uvm_pager.c
index b5aa6c9dcdf..be5ecde0ab9 100644
--- sys/uvm/uvm_pager.c
+++ sys/uvm/uvm_pager.c
@@ -384,7 +384,6 @@ uvm_mk_pcluster(struct uvm_object *uobj, struct vm_page 
**pps, int *npages,
 
                        /* yes!   enroll the page in our array */
                        atomic_setbits_int(&pclust->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(pclust, "uvm_mk_pcluster");
 
                        /*
                         * If we want to free after io is done, and we're
@@ -646,7 +645,6 @@ uvm_pager_dropcluster(struct uvm_object *uobj, struct 
vm_page *pg,
                                /* so that anfree will free */
                                atomic_clearbits_int(&ppsp[lcv]->pg_flags,
                                    PG_BUSY);
-                               UVM_PAGE_OWN(ppsp[lcv], NULL);
 
                                /* kills anon and frees pg */
                                uvm_anfree(ppsp[lcv]->uanon);
@@ -659,7 +657,6 @@ uvm_pager_dropcluster(struct uvm_object *uobj, struct 
vm_page *pg,
                         */
                        atomic_clearbits_int(&ppsp[lcv]->pg_flags,
                            PG_BUSY|PG_WANTED|PG_FAKE|PG_RELEASED);
-                       UVM_PAGE_OWN(ppsp[lcv], NULL);
                }
 
                /*
diff --git sys/uvm/uvm_pdaemon.c sys/uvm/uvm_pdaemon.c
index c0368f66815..34ac8cf0e93 100644
--- sys/uvm/uvm_pdaemon.c
+++ sys/uvm/uvm_pdaemon.c
@@ -531,7 +531,6 @@ uvmpd_scan_inactive(struct pglist *pglst)
 
                        swap_backed = ((p->pg_flags & PQ_SWAPBACKED) != 0);
                        atomic_setbits_int(&p->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(p, "scan_inactive");
                        pmap_page_protect(p, PROT_READ);
                        uvmexp.pgswapout++;
 
@@ -562,7 +561,6 @@ uvmpd_scan_inactive(struct pglist *pglst)
                                                atomic_clearbits_int(
                                                    &p->pg_flags,
                                                    PG_BUSY);
-                                               UVM_PAGE_OWN(p, NULL);
                                                continue;
                                        }
                                        swcpages = 0;   /* cluster is empty */
@@ -713,7 +711,6 @@ uvmpd_scan_inactive(struct pglist *pglst)
                                wakeup(p);
 
                        atomic_clearbits_int(&p->pg_flags, PG_BUSY|PG_WANTED);
-                       UVM_PAGE_OWN(p, NULL);
 
                        /* released during I/O? Can only happen for anons */
                        if (p->pg_flags & PG_RELEASED) {
diff --git sys/uvm/uvm_vnode.c sys/uvm/uvm_vnode.c
index 3803d31db7b..81d142297fd 100644
--- sys/uvm/uvm_vnode.c
+++ sys/uvm/uvm_vnode.c
@@ -689,7 +689,6 @@ uvn_flush(struct uvm_object *uobj, voff_t start, voff_t 
stop, int flags)
                 * note: locked: page queues.
                 */
                atomic_setbits_int(&pp->pg_flags, PG_BUSY);
-               UVM_PAGE_OWN(pp, "uvn_flush");
                pmap_page_protect(pp, PROT_READ);
                /* if we're async, free the page in aiodoned */
                if ((flags & (PGO_FREE|PGO_SYNCIO)) == PGO_FREE)
@@ -774,7 +773,6 @@ ReTry:
 
                                atomic_clearbits_int(&ptmp->pg_flags,
                                    PG_WANTED|PG_BUSY);
-                               UVM_PAGE_OWN(ptmp, NULL);
                                atomic_setbits_int(&ptmp->pg_flags,
                                    PG_CLEAN|PG_CLEANCHK);
                                if ((flags & PGO_FREE) == 0)
@@ -929,7 +927,6 @@ uvn_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                         * result array
                         */
                        atomic_setbits_int(&ptmp->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(ptmp, "uvn_get1");
                        pps[lcv] = ptmp;
                        gotpages++;
 
@@ -1029,7 +1026,6 @@ uvn_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
                         * exit the while loop).
                         */
                        atomic_setbits_int(&ptmp->pg_flags, PG_BUSY);
-                       UVM_PAGE_OWN(ptmp, "uvn_get2");
                        pps[lcv] = ptmp;
                }
 
@@ -1058,7 +1054,6 @@ uvn_get(struct uvm_object *uobj, voff_t offset, struct 
vm_page **pps,
 
                        atomic_clearbits_int(&ptmp->pg_flags,
                            PG_WANTED|PG_BUSY);
-                       UVM_PAGE_OWN(ptmp, NULL);
                        uvm_lock_pageq();
                        uvm_pagefree(ptmp);
                        uvm_unlock_pageq();

Reply via email to