summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-04-27 20:26:15 +0000
committerian <ian@FreeBSD.org>2014-04-27 20:26:15 +0000
commitbce7664663e31e053fee6b8fb8a438cd69b5eda2 (patch)
tree014839e0ae7214ac6c040917ce472b284c572880
parent51847f783b9fa00093efadac8a94e83272aad650 (diff)
downloadFreeBSD-src-bce7664663e31e053fee6b8fb8a438cd69b5eda2.zip
FreeBSD-src-bce7664663e31e053fee6b8fb8a438cd69b5eda2.tar.gz
Explain why wbinv_all is SMP-safe in this case, and add a missing l2 cache
flush. (Either it was missing here, or it isn't needed in the minidump case. Adding it here seems like the safer path to consistancy.)
-rw-r--r--sys/arm/arm/dump_machdep.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/arm/arm/dump_machdep.c b/sys/arm/arm/dump_machdep.c
index e8ba5768..f37346c 100644
--- a/sys/arm/arm/dump_machdep.c
+++ b/sys/arm/arm/dump_machdep.c
@@ -174,8 +174,14 @@ cb_dumpdata(struct md_pa *mdp, int seqnr, void *arg)
printf(" chunk %d: %dMB (%d pages)", seqnr, pgs * PAGE_SIZE / (
1024*1024), pgs);
- /* Make sure we write coherent datas. */
+ /*
+ * Make sure we write coherent data. Note that in the SMP case this
+ * only operates on the L1 cache of the current CPU, but all other CPUs
+ * have already been stopped, and their flush/invalidate was done as
+ * part of stopping.
+ */
cpu_idcache_wbinv_all();
+ cpu_l2cache_wbinv_all();
#ifdef __XSCALE__
xscale_cache_clean_minidata();
#endif
OpenPOWER on IntegriCloud