Module Name: src Committed By: uebayasi Date: Tue Feb 23 15:38:30 UTC 2010
Modified Files: src/sys/uvm [uebayasi-xip]: uvm_page.c uvm_page.h Log Message: Put back vm_page::phys_addr for now, because removing it involves some random parts in the tree. I'll revisit this after merging the branch. To generate a diff of this commit: cvs rdiff -u -r1.153.2.14 -r1.153.2.15 src/sys/uvm/uvm_page.c cvs rdiff -u -r1.59.2.14 -r1.59.2.15 src/sys/uvm/uvm_page.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/uvm/uvm_page.c diff -u src/sys/uvm/uvm_page.c:1.153.2.14 src/sys/uvm/uvm_page.c:1.153.2.15 --- src/sys/uvm/uvm_page.c:1.153.2.14 Tue Feb 23 08:46:17 2010 +++ src/sys/uvm/uvm_page.c Tue Feb 23 15:38:30 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_page.c,v 1.153.2.14 2010/02/23 08:46:17 uebayasi Exp $ */ +/* $NetBSD: uvm_page.c,v 1.153.2.15 2010/02/23 15:38:30 uebayasi Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -71,7 +71,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.153.2.14 2010/02/23 08:46:17 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.153.2.15 2010/02/23 15:38:30 uebayasi Exp $"); #include "opt_ddb.h" #include "opt_uvmhist.h" @@ -452,6 +452,9 @@ /* init and free vm_pages (we've already zeroed them) */ paddr = ptoa(vm_physmem[lcv].start); for (i = 0 ; i < n ; i++, paddr += PAGE_SIZE) { +#if 1 + vm_physmem[lcv].pgs[i].phys_addr = paddr; +#endif #ifdef __HAVE_VM_PAGE_MD VM_MDPAGE_INIT(&vm_physmem[lcv].pgs[i].mdpage, paddr); #endif @@ -835,10 +838,13 @@ printf("\tignoring 0x%lx -> 0x%lx\n", start, end); return; } - /* zero data, init free_list, and free pages */ + /* zero data, init phys_addr, free_list, and free pages */ memset(pgs, 0, sizeof(struct vm_page) * npages); for (lcv = 0, paddr = ptoa(start) ; lcv < npages ; lcv++, paddr += PAGE_SIZE) { +#if 1 + pgs[lcv].phys_addr = paddr; +#endif pgs[lcv].free_list = free_list; if (atop(paddr) >= avail_start && atop(paddr) <= avail_end) @@ -1142,18 +1148,23 @@ paddr_t uvm_vm_page_to_phys(const struct vm_page *pg) { - const struct vm_physseg *seg; - int psi; #ifdef DEVICE_PAGE if (uvm_pageisdevice_p(pg)) { return VM_PAGE_DEVICE_TO_PHYS(pg); } #endif +#if 1 + return pg->phys_addr; +#else + const struct vm_physseg *seg; + int psi; + psi = VM_PHYSSEG_FIND(vm_physmem, vm_nphysmem, VM_PHYSSEG_OP_PG, 0, pg, NULL); KASSERT(psi != -1); seg = &vm_physmem[psi]; return (seg->start + pg - seg->pgs) * PAGE_SIZE; +#endif } Index: src/sys/uvm/uvm_page.h diff -u src/sys/uvm/uvm_page.h:1.59.2.14 src/sys/uvm/uvm_page.h:1.59.2.15 --- src/sys/uvm/uvm_page.h:1.59.2.14 Tue Feb 23 08:46:17 2010 +++ src/sys/uvm/uvm_page.h Tue Feb 23 15:38:30 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_page.h,v 1.59.2.14 2010/02/23 08:46:17 uebayasi Exp $ */ +/* $NetBSD: uvm_page.h,v 1.59.2.15 2010/02/23 15:38:30 uebayasi Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -142,6 +142,10 @@ * to modify: [O _and_ P] */ uint16_t wire_count; /* wired down map refs [P] */ uint16_t pqflags; /* page queue flags [P] */ +#if 1 + paddr_t phys_addr; /* physical address of page */ +#endif + #ifdef __HAVE_VM_PAGE_MD struct vm_page_md mdpage; /* pmap-specific data */