diff options
author | ian <ian@FreeBSD.org> | 2014-04-27 20:26:15 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-04-27 20:26:15 +0000 |
commit | bce7664663e31e053fee6b8fb8a438cd69b5eda2 (patch) | |
tree | 014839e0ae7214ac6c040917ce472b284c572880 | |
parent | 51847f783b9fa00093efadac8a94e83272aad650 (diff) | |
download | FreeBSD-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.c | 8 |
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 |