sh: Zero out aliases counter when using SH-X3 hardware assistance.
authorPaul Mundt <lethal@linux-sh.org>
Tue, 20 Apr 2010 06:37:23 +0000 (15:37 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 20 Apr 2010 06:37:23 +0000 (15:37 +0900)
This zeroes out the number of cache aliases in the cache info descriptors
when hardware alias avoidance is enabled. This cuts down on the amount of
flushing taken care of by common code, and also permits coherency control
to be disabled for the single CPU and 4k page size case.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/cache-shx3.c

index 65936c4fef0347c32001e9a00ce264b76e12db77..c0adbee97b5f29a2cdb33f6124c1d62ee821ebec 100644 (file)
@@ -21,9 +21,18 @@ void __init shx3_cache_init(void)
 
        ccr = __raw_readl(CCR);
 
-       if (boot_cpu_data.dcache.n_aliases)
+       /*
+        * If we've got cache aliases, resolve them in hardware.
+        */
+       if (boot_cpu_data.dcache.n_aliases || boot_cpu_data.icache.n_aliases) {
                ccr |= CCR_CACHE_SNM;
 
+               boot_cpu_data.icache.n_aliases = 0;
+               boot_cpu_data.dcache.n_aliases = 0;
+
+               pr_info("Enabling hardware synonym avoidance\n");
+       }
+
 #ifdef CONFIG_SMP
        /*
         * Broadcast I-cache block invalidations by default.