diff options
Diffstat (limited to 'common/system.c')
-rw-r--r-- | common/system.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/common/system.c b/common/system.c index 610363a61a..d64c9c3643 100644 --- a/common/system.c +++ b/common/system.c @@ -501,9 +501,13 @@ static void jump_to_image(uintptr_t init_addr) * RO, EC won't jump to RW, pd_prepare_sysjump is not needed. Even if * PD is enabled because the device is not write protected, EFS2 jumps * to RW before PD tasks start. So, there is no states to clean up. + * + * Even if EFS2 is enabled, late sysjump can happen when secdata + * kernel is missing or a communication error happens. So, we need to + * check whether PD tasks have started (instead of VBOOT_EFS2, which + * is static). */ - if (!IS_ENABLED(CONFIG_VBOOT_EFS2) && - IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) + if (task_start_called() && IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) /* Note: must be before i2c module is locked down */ pd_prepare_sysjump(); |