PERFORCE change 61582 for review

Marcel Moolenaar marcel at FreeBSD.org
Wed Sep 15 18:53:25 PDT 2004


http://perforce.freebsd.org/chv.cgi?CH=61582

Change 61582 by marcel at marcel_nfs on 2004/09/16 01:52:24

	Revert the SPARSE_PHYSICAL_MEMORY changes.

Affected files ...

.. //depot/projects/ia64/sys/vm/vm_page.c#64 edit
.. //depot/projects/ia64/sys/vm/vm_page.h#31 edit

Differences ...

==== //depot/projects/ia64/sys/vm/vm_page.c#64 (text+ko) ====

@@ -97,7 +97,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.290 2004/07/29 18:56:31 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.291 2004/09/15 12:09:50 phk Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -148,30 +148,7 @@
 		panic("vm_set_page_size: page size not a power of two");
 }
 
-#ifdef SPARSE_PHYSICAL_MEMORY
 /*
- *	vm_page_from_phys
- *
- *	Given a physical address, return a pointer to the vm_page in the
- *	vm_page array. This function deals with sparse memory addresses.
- */
-vm_page_t
-vm_page_from_phys(vm_offset_t pa)
-{
-	vm_page_t p = vm_page_array;
-	int i;
-
-	for (i = 0; phys_avail[i + 1]; i += 2) {
-		if (pa >= phys_avail[i] && pa < phys_avail[i + 1])
-			return (p + (atop(pa) - phys_avail[i] / PAGE_SIZE));
-		p += (phys_avail[i + 1] - phys_avail[i]) / PAGE_SIZE;
-	}
-	panic("vm_page_from_phys: unmanaged physical address.");
-	return (0);
-}
-#endif
-
-/*
  *	vm_page_startup:
  *
  *	Initializes the resident memory module.
@@ -211,7 +188,6 @@
 		phys_avail[i + 1] = trunc_page(phys_avail[i + 1]);
 	}
 
-	/* XXX: Based on assumptions that aren't valid on all architectures.*/
 	for (i = 0; phys_avail[i + 1]; i += 2) {
 		vm_paddr_t size = phys_avail[i + 1] - phys_avail[i];
 
@@ -246,8 +222,8 @@
 	bootpages = UMA_BOOT_PAGES * UMA_SLAB_SIZE;
 	new_end = end - bootpages;
 	new_end = trunc_page(new_end);
-	/* XXX: Bounds check! */
-	mapped = pmap_map(&vaddr, new_end, end, VM_PROT_READ | VM_PROT_WRITE);
+	mapped = pmap_map(&vaddr, new_end, end,
+	    VM_PROT_READ | VM_PROT_WRITE);
 	bzero((caddr_t) mapped, end - new_end);
 	uma_startup((caddr_t)mapped);
 
@@ -257,16 +233,7 @@
 	 * page).
 	 */
 	first_page = phys_avail[0] / PAGE_SIZE;
-#ifdef SPARSE_PHYSICAL_MEMORY
-	/*
-	 * Don't use the pysical address range for the actual page range.
-	 * On architectures with sparse memory addressing this is wrong.
-	 * Instead, use the total memory obtained above.
-	 */
-	page_range = total / PAGE_SIZE;
-#else
-	page_range = phys_avail[(nblocks-1) * 2 + 1] / PAGE_SIZE - first_page;
-#endif
+	page_range = phys_avail[(nblocks - 1) * 2 + 1] / PAGE_SIZE - first_page;
 	npages = (total - (page_range * sizeof(struct vm_page)) -
 	    (end - new_end)) / PAGE_SIZE;
 	end = new_end;
@@ -281,8 +248,8 @@
 	 * queue.
 	 */
 	new_end = trunc_page(end - page_range * sizeof(struct vm_page));
-	/* XXX: Bounds check! */
-	mapped = pmap_map(&vaddr, new_end, end, VM_PROT_READ | VM_PROT_WRITE);
+	mapped = pmap_map(&vaddr, new_end, end,
+	    VM_PROT_READ | VM_PROT_WRITE);
 	vm_page_array = (vm_page_t) mapped;
 	phys_avail[biggestone + 1] = new_end;
 
@@ -296,7 +263,7 @@
 	 * Construct the free queue(s) in descending order (by physical
 	 * address) so that the first 16MB of physical memory is allocated
 	 * last rather than first.  On large-memory machines, this avoids
-	 * the exhaustion of low physical memory before isa_dmainit has run.
+	 * the exhaustion of low physical memory before isa_dma_init has run.
 	 */
 	cnt.v_page_count = 0;
 	cnt.v_free_count = 0;

==== //depot/projects/ia64/sys/vm/vm_page.h#31 (text+ko) ====

@@ -290,11 +290,8 @@
 
 #define VM_PAGE_TO_PHYS(entry)	((entry)->phys_addr)
 
-#ifdef SPARSE_PHYSICAL_MEMORY
-#define	PHYS_TO_VM_PAGE(pa)	vm_page_from_phys(pa)
-#else
-#define	PHYS_TO_VM_PAGE(pa)	(&vm_page_array[atop(pa) - first_page ])
-#endif
+#define PHYS_TO_VM_PAGE(pa) \
+		(&vm_page_array[atop(pa) - first_page ])
 
 extern struct mtx vm_page_queue_mtx;
 #define vm_page_lock_queues()   mtx_lock(&vm_page_queue_mtx)
@@ -360,7 +357,6 @@
 void vm_page_rename (vm_page_t, vm_object_t, vm_pindex_t);
 vm_page_t vm_page_select_cache(int);
 vm_page_t vm_page_splay(vm_pindex_t, vm_page_t);
-vm_page_t vm_page_from_phys(vm_offset_t);
 vm_offset_t vm_page_startup(vm_offset_t vaddr);
 void vm_page_unmanage (vm_page_t);
 void vm_page_unwire (vm_page_t, int);


More information about the p4-projects mailing list