Date: Mon, 4 Oct 2010 16:49:40 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/vm vm_map.c Message-ID: <201010041650.o94Go5tE079734@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
alc 2010-10-04 16:49:40 UTC FreeBSD src repository Modified files: sys/vm vm_map.c Log: SVN rev 213408 on 2010-10-04 16:49:40Z by alc If vm_map_find() is asked to allocate a superpage-aligned region of virtual addresses that is greater than a superpage in size but not a multiple of the superpage size, then vm_map_find() is not always expanding the kernel pmap to support the last few small pages being allocated. These failures are not commonplace, so this was first noticed by someone porting FreeBSD to a new architecture. Previously, we grew the kernel page table in vm_map_findspace() when we found the first available virtual address. This works most of the time because we always grow the kernel pmap or page table by an amount that is a multiple of the superpage size. Now, instead, we defer the call to pmap_growkernel() until we are committed to a range of virtual addresses in vm_map_insert(). In general, there is another reason to prefer calling pmap_growkernel() in vm_map_insert(). It makes it possible for someone to do the equivalent of an mmap(MAP_FIXED) on the kernel map. Reported by: Svatopluk Kraus Reviewed by: kib@ MFC after: 3 weeks Revision Changes Path 1.434 +8 -14 src/sys/vm/vm_map.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010041650.o94Go5tE079734>