Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Apr 2009 03:44:54 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/mips/mips pmap.c
Message-ID:  <200904200345.n3K3j81C059655@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
alc         2009-04-20 03:44:54 UTC

  FreeBSD src repository

  Modified files:
    sys/mips/mips        pmap.c 
  Log:
  SVN rev 191300 on 2009-04-20 03:44:54Z by alc
  
  MFamd64/i386
    Introduce pmap_try_insert_pv_entry(), a function that conditionally
    creates a pv entry if the number of entries is below the high water mark
    for pv entries.
  
    Introduce pmap_enter_quick_locked() and use it to reimplement
    pmap_enter_object().  The old implementation was broken.  For example,
    it could block while holding a mutex lock.
  
    Change pmap_enter_quick_locked() to fail rather than wait if it is
    unable to allocate a page table page.  This prevents a race between
    pmap_enter_object() and the page daemon.  Specifically, an inactive
    page that is a successor to the page that was given to
    pmap_enter_quick_locked() might become a cache page while
    pmap_enter_quick_locked() waits and later pmap_enter_object() maps
    the cache page violating the invariant that cache pages are never
    mapped.  Similarly, change
    pmap_enter_quick_locked() to call pmap_try_insert_pv_entry() rather
    than pmap_insert_entry().  Generally speaking,
    pmap_enter_quick_locked() is used to create speculative mappings.  So,
    it should not try hard to allocate memory if free memory is scarce.
  
  Tested by:      gonzo
  
  Revision  Changes    Path
  1.14      +70 -39    src/sys/mips/mips/pmap.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904200345.n3K3j81C059655>