Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Jun 2012 12:13:20 +0000 (UTC)
From:      Grzegorz Bernacki <gber@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r236676 - projects/armv6/sys/arm/arm
Message-ID:  <201206061213.q56CDK02013193@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gber
Date: Wed Jun  6 12:13:20 2012
New Revision: 236676
URL: http://svn.freebsd.org/changeset/base/236676

Log:
  Flush cache before downgrade page to WT mode.
  
  Cache should be flushed before downgrading to avoid situation when
  cache controller flushes dirty cache line to page which is not WB anymore.

Modified:
  projects/armv6/sys/arm/arm/pmap-v6.c

Modified: projects/armv6/sys/arm/arm/pmap-v6.c
==============================================================================
--- projects/armv6/sys/arm/arm/pmap-v6.c	Wed Jun  6 11:46:37 2012	(r236675)
+++ projects/armv6/sys/arm/arm/pmap-v6.c	Wed Jun  6 12:13:20 2012	(r236676)
@@ -809,6 +809,12 @@ pmap_l2ptp_ctor(void *mem, int size, voi
 	ptep = &l2b->l2b_kva[l2pte_index(va)];
 	pte = *ptep;
 
+	cpu_idcache_wbinv_range(va, PAGE_SIZE);
+#ifdef ARM_L2_PIPT
+	cpu_l2cache_wbinv_range(pte & L2_S_FRAME, PAGE_SIZE);
+#else
+	cpu_l2cache_wbinv_range(va, PAGE_SIZE);
+#endif
 	if ((pte & L2_S_CACHE_MASK) != pte_l2_s_cache_mode_pt) {
 		/*
 		 * Page tables must have the cache-mode set to



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