summaryrefslogtreecommitdiff
path: root/common/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/system.c')
-rw-r--r--common/system.c8
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();