We do not necessarily need to map/unmap pages to zero parts of them.

On systems where physical memory is also direct mapped (alpha, sparc,
ia64 etc) this is slightly harmful.
This commit is contained in:
Peter Wemm
2002-04-28 00:15:48 +00:00
parent c9f93b82a9
commit 44e74ba6c3
3 changed files with 14 additions and 4 deletions
+12
View File
@@ -456,6 +456,18 @@ vm_page_zero_fill(vm_page_t m)
return (TRUE);
}
/*
* vm_page_zero_fill_area:
*
* Like vm_page_zero_fill but only fill the specified area.
*/
boolean_t
vm_page_zero_fill_area(vm_page_t m, int off, int size)
{
pmap_zero_page_area(m, off, size);
return (TRUE);
}
/*
* vm_page_copy:
*
+1
View File
@@ -327,6 +327,7 @@ void vm_page_hold(vm_page_t mem);
void vm_page_unhold(vm_page_t mem);
void vm_page_protect(vm_page_t mem, int prot);
boolean_t vm_page_zero_fill(vm_page_t m);
boolean_t vm_page_zero_fill_area(vm_page_t m, int off, int len);
void vm_page_copy(vm_page_t src_m, vm_page_t dest_m);
void vm_page_free(vm_page_t m);
void vm_page_free_zero(vm_page_t m);
+1 -4
View File
@@ -305,7 +305,6 @@ vnode_pager_setsize(vp, nsize)
* it can screw up NFS reads, so we don't allow the case.
*/
if (nsize & PAGE_MASK) {
vm_offset_t kva;
vm_page_t m;
m = vm_page_lookup(object, OFF_TO_IDX(nsize));
@@ -317,9 +316,7 @@ vnode_pager_setsize(vp, nsize)
* Clear out partial-page garbage in case
* the page has been mapped.
*/
kva = vm_pager_map_page(m);
bzero((caddr_t)kva + base, size);
vm_pager_unmap_page(kva);
vm_page_zero_fill_area(m, base, size);
/*
* XXX work around SMP data integrity race