Skip site navigation (1)Skip section navigation (2)
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>