diff --git a/kernel/common/los_config.c b/kernel/common/los_config.c index b894e796..c59fe917 100644 --- a/kernel/common/los_config.c +++ b/kernel/common/los_config.c @@ -231,9 +231,7 @@ LITE_OS_SEC_TEXT_INIT INT32 OsMain(VOID) if (ret != LOS_OK) { return ret; } -#if (LOSCFG_KERNEL_SMP == 1) - release_secondary_cores(); -#endif + OsInitCall(LOS_INIT_LEVEL_VM_COMPLETE); ret = OsIpcInit(); @@ -267,6 +265,10 @@ LITE_OS_SEC_TEXT_INIT INT32 OsMain(VOID) OsInitCall(LOS_INIT_LEVEL_KMOD_EXTENDED); +#if (LOSCFG_KERNEL_SMP == 1) + release_secondary_cores(); +#endif + OsInitCall(LOS_INIT_LEVEL_KMOD_TASK); #ifdef LOS_INIT_STATISTICS diff --git a/kernel/common/los_init.c b/kernel/common/los_init.c index 0565e7e3..fc9da3fe 100644 --- a/kernel/common/los_init.c +++ b/kernel/common/los_init.c @@ -72,7 +72,7 @@ STATIC VOID InitLevelCall(const CHAR *name, const UINT32 level, struct ModuleIni g_initCurrentLevel = level; g_initCurrentModule = initLevelList[level]; } else { - while (g_initCurrentLevel != level) { + while (g_initCurrentLevel < level) { } } @@ -106,7 +106,7 @@ STATIC VOID InitLevelCall(const CHAR *name, const UINT32 level, struct ModuleIni #endif } while (1); - if (level >= LOS_INIT_LEVEL_VM_COMPLETE) { + if (level >= LOS_INIT_LEVEL_KMOD_TASK) { LOS_AtomicInc(&g_initCount); while ((LOS_AtomicRead(&g_initCount) % LOSCFG_KERNEL_CORE_NUM) != 0) { }