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 */