Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Nov 2010 21:16:21 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/amd64/amd64 pmap.c src/sys/i386/i386 pmap.c
Message-ID:  <201011262116.oAQLGWAK002899@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help

jkim        2010-11-26 21:16:21 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sys/amd64/amd64      pmap.c 
    sys/i386/i386        pmap.c 
  Log:
  SVN rev 215896 on 2010-11-26 21:16:21Z by jkim
  
  MFC:    r196769, r196771, r211424, r215703, r215754
  
  - Disable caches and flush caches/TLBs when we update PAT as we do for MTRR.
  Flushing TLBs is required to ensure cache coherency according to the AMD64
  architecture manual.  Flushing caches is only required when changing from a
  cacheable memory type (WB, WP or WT) to an uncacheable type (WC, UC or UC-).
  Since this function is only used once per processor during startup, there is
  no need to take any shortcuts.
  - Leave PAT indices 0-3 at the default of WB, WT, UC-, and UC.  Program 5 as
  WP (from default WT) and 6 as WC (from default UC-).  Leave 4 and 7 at the
  default of WB and UC.  This is to avoid transition from a cacheable memory
  type to an uncacheable type to minimize possible cache incoherency.  Since
  we perform flushing caches and TLBs now, this change may not be necessary
  any more but we do not want to take any chances.
  - Improve pmap_cache_bits() with an array to map PAT memory type to index.
  This array is initialized early from pmap_init_pat(), so that we do not need
  to handle special cases in the function any more.  Now this function is
  identical on both amd64 and i386.
  
  Revision    Changes    Path
  1.667.2.17  +83 -36    src/sys/amd64/amd64/pmap.c
  1.645.2.21  +94 -87    src/sys/i386/i386/pmap.c



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