diff options
Diffstat (limited to 'firmware/2lib/2kernel.c')
-rw-r--r-- | firmware/2lib/2kernel.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/firmware/2lib/2kernel.c b/firmware/2lib/2kernel.c index 02ea5446..4b6badb6 100644 --- a/firmware/2lib/2kernel.c +++ b/firmware/2lib/2kernel.c @@ -126,7 +126,7 @@ vb2_error_t vb2api_kernel_phase1(struct vb2_context *ctx) struct vb2_shared_data *sd = vb2_get_sd(ctx); struct vb2_workbuf wb; struct vb2_packed_key *packed_key; - uint32_t secdata_flags; + uint32_t flags; vb2_error_t rv; vb2_workbuf_from_ctx(ctx, &wb); @@ -143,12 +143,14 @@ vb2_error_t vb2api_kernel_phase1(struct vb2_context *ctx) return rv; } - /* Enable phone recovery while disabling the UI; disable diagnostics. */ - secdata_flags = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS); - secdata_flags &= ~VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_DISABLED; - secdata_flags |= VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_UI_DISABLED; - secdata_flags |= VB2_SECDATA_KERNEL_FLAG_DIAGNOSTIC_UI_DISABLED; - vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, secdata_flags); + /* Initialize experimental feature flags while in normal RW path. */ + if (!(ctx->flags & VB2_CONTEXT_RECOVERY_MODE)) { + flags = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS); + flags &= ~VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_DISABLED; + flags |= VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_UI_DISABLED; + flags |= VB2_SECDATA_KERNEL_FLAG_DIAGNOSTIC_UI_DISABLED; + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, flags); + } /* Read kernel version from secdata. */ sd->kernel_version_secdata = |