Module Name: src Committed By: tsutsui Date: Tue May 14 14:11:43 UTC 2013
Modified Files: src/sys/arch/sh3/sh3: cache_sh4.c Log Message: Don't call sh4_icache_sync_all() before sh_cache_ops is initialized. Instead, use SH4_EMODE_CACHE_FLUSH() or SH4_CACHE_FLUSH() macro to invalidate cache before initializing CCR. This seems to suppress random file system corruption on wd(4) at acardide(4) (which uses bus-master DMA and calls many cache flush ops) during pkgsrc packages builds on landisk. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sh3/sh3/cache_sh4.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sh3/sh3/cache_sh4.c diff -u src/sys/arch/sh3/sh3/cache_sh4.c:1.23 src/sys/arch/sh3/sh3/cache_sh4.c:1.24 --- src/sys/arch/sh3/sh3/cache_sh4.c:1.23 Wed Dec 12 16:24:49 2012 +++ src/sys/arch/sh3/sh3/cache_sh4.c Tue May 14 14:11:43 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cache_sh4.c,v 1.23 2012/12/12 16:24:49 tsutsui Exp $ */ +/* $NetBSD: cache_sh4.c,v 1.24 2013/05/14 14:11:43 tsutsui Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cache_sh4.c,v 1.23 2012/12/12 16:24:49 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cache_sh4.c,v 1.24 2013/05/14 14:11:43 tsutsui Exp $"); #include "opt_cache.h" @@ -118,8 +118,11 @@ sh4_cache_config(void) r |= SH4_CCR_CB; #endif - sh4_icache_sync_all(); RUN_P2; + if (r & SH4_CCR_EMODE) + SH4_EMODE_CACHE_FLUSH(); + else + SH4_CACHE_FLUSH(); _reg_write_4(SH4_CCR, SH4_CCR_ICI|SH4_CCR_OCI); _reg_write_4(SH4_CCR, r); RUN_P1;