diff options
author | jchandra <jchandra@FreeBSD.org> | 2010-06-04 06:35:36 +0000 |
---|---|---|
committer | jchandra <jchandra@FreeBSD.org> | 2010-06-04 06:35:36 +0000 |
commit | e9a1a12ab4f1f5036c09d9897d27c6610f939131 (patch) | |
tree | f0fc6c210b666d2da4c48f5be78afb0af023c746 /sys/vm/vm_pageout.h | |
parent | 152e4bab37106aa49d83d922192660fe833ade5e (diff) | |
download | FreeBSD-src-e9a1a12ab4f1f5036c09d9897d27c6610f939131.zip FreeBSD-src-e9a1a12ab4f1f5036c09d9897d27c6610f939131.tar.gz |
Make vm_contig_grow_cache() extern, and use it when vm_phys_alloc_contig()
fails to allocate MIPS page table pages. The current usage of VM_WAIT in
case of vm_phys_alloc_contig() failure is not correct, because:
"There is no guarantee that any of the available free (or cached) pages
after the VM_WAIT will fall within the range of suitable physical
addresses. Every time this function sleeps and a single page is freed
(or cached) by someone else, this function will be reawakened. With
a little bad luck, you could spin indefinitely."
We also add low and high parameters to vm_contig_grow_cache() and
vm_contig_launder() so that we restrict vm_contig_launder() to the range
of pages we are interested in.
Reported by: alc
Reviewed by: alc
Approved by: rrs (mentor)
Diffstat (limited to 'sys/vm/vm_pageout.h')
-rw-r--r-- | sys/vm/vm_pageout.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/vm/vm_pageout.h b/sys/vm/vm_pageout.h index 4759dd7..4857c3e 100644 --- a/sys/vm/vm_pageout.h +++ b/sys/vm/vm_pageout.h @@ -105,5 +105,6 @@ boolean_t vm_pageout_fallback_object_lock(vm_page_t, vm_page_t *); int vm_pageout_flush(vm_page_t *, int, int); void vm_pageout_oom(int shortage); boolean_t vm_pageout_page_lock(vm_page_t, vm_page_t *); +void vm_contig_grow_cache(int, vm_paddr_t, vm_paddr_t); #endif #endif /* _VM_VM_PAGEOUT_H_ */ |