extern int nospec_disable;
 
 void nospec_init_branches(void);
+void nospec_auto_detect(void);
 void nospec_revert(s32 *start, s32 *end);
 
 #endif /* __ASSEMBLY__ */
 
 }
 early_param("nospectre_v2", nospectre_v2_setup_early);
 
-static int __init spectre_v2_auto_early(void)
+void __init nospec_auto_detect(void)
 {
        if (IS_ENABLED(CC_USING_EXPOLINE)) {
                /*
         * nobp setting decides what is done, this depends on the
         * CONFIG_KERNEL_NP option and the nobp/nospec parameters.
         */
-       return 0;
 }
-#ifdef CONFIG_EXPOLINE_AUTO
-early_initcall(spectre_v2_auto_early);
-#endif
 
 static int __init spectre_v2_setup_early(char *str)
 {
        if (str && !strncmp(str, "off", 3))
                nospec_disable = 1;
        if (str && !strncmp(str, "auto", 4))
-               spectre_v2_auto_early();
+               nospec_auto_detect();
        return 0;
 }
 early_param("spectre_v2", spectre_v2_setup_early);
 
        init_mm.end_data = (unsigned long) _edata;
        init_mm.brk = (unsigned long) _end;
 
+       if (IS_ENABLED(CONFIG_EXPOLINE_AUTO))
+               nospec_auto_detect();
+
        parse_early_param();
 #ifdef CONFIG_CRASH_DUMP
        /* Deactivate elfcorehdr= kernel parameter */