ARC: mm: split arc_cache_init to allow __init reaping of bulk
authorVineet Gupta <vgupta@synopsys.com>
Wed, 18 Jan 2017 23:10:52 +0000 (15:10 -0800)
committerVineet Gupta <vgupta@synopsys.com>
Thu, 19 Jan 2017 03:21:02 +0000 (19:21 -0800)
arc_cache_init() is called for each core so can't be tagged __init.
However bulk of it is only executed by master core and thus is candidate
for __init reaping.

So split it up to allow that.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/mm/cache.c

index 3c275a81528c77ebaedd3b8900cc336f1892c4ed..ee01979e3d01d0cbf05fe404694eb79973cd1ec0 100644 (file)
@@ -993,7 +993,7 @@ SYSCALL_DEFINE3(cacheflush, uint32_t, start, uint32_t, sz, uint32_t, flags)
  * 3. All Caches need to be disabled when setting up IOC to elide any in-flight
  *    Coherency transactions
  */
-noinline void arc_ioc_setup(void)
+noinline void __init arc_ioc_setup(void)
 {
        unsigned int ap_sz;
 
@@ -1023,21 +1023,9 @@ noinline void arc_ioc_setup(void)
        __dc_enable();
 }
 
-void arc_cache_init(void)
+void __init arc_cache_init_master(void)
 {
        unsigned int __maybe_unused cpu = smp_processor_id();
-       char str[256];
-
-       printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
-
-       /*
-        * Only master CPU needs to execute rest of function:
-        *  - Assume SMP so all cores will have same cache config so
-        *    any geomtry checks will be same for all
-        *  - IOC setup / dma callbacks only need to be setup once
-        */
-       if (cpu)
-               return;
 
        if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE)) {
                struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
@@ -1106,3 +1094,20 @@ void arc_cache_init(void)
                __dma_cache_wback = __dma_cache_wback_l1;
        }
 }
+
+void __ref arc_cache_init(void)
+{
+       unsigned int __maybe_unused cpu = smp_processor_id();
+       char str[256];
+
+       printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
+
+       /*
+        * Only master CPU needs to execute rest of function:
+        *  - Assume SMP so all cores will have same cache config so
+        *    any geomtry checks will be same for all
+        *  - IOC setup / dma callbacks only need to be setup once
+        */
+       if (!cpu)
+               arc_cache_init_master();
+}