coreboot/src/lib/bootmode.c
Yu-Ping Wu 409860687b security/vboot: Set VBOOT_ALWAYS_ENABLE_DISPLAY if BMP_LOGO
If BMP_LOGO is set, currently display_init_required() will always return
1, so that platform code will always initialize display. However, that
information isn't passed to vboot, which may result in unnecessary extra
reboots, for example when the payload needs to request display init (by
vb2api_need_reboot_for_display()).

Since there is already a Kconfig option VBOOT_ALWAYS_ENABLE_DISPLAY to
tell vboot that "display is available on this boot", enable it by
default if BMP_LOGO is set.

BUG=b:345085042
TEST=none
BRANCH=none

Change-Id: I20113ec464aa036d0498dedb50f0e82cb677ae93
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83256
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-07-03 08:43:01 +00:00

35 lines
697 B
C

/* SPDX-License-Identifier: GPL-2.0-only */
#include <assert.h>
#include <bootmode.h>
#include <security/vboot/misc.h>
#include <vb2_api.h>
static int gfx_init_done = -1;
int gfx_get_init_done(void)
{
if (gfx_init_done < 0)
return 0;
return gfx_init_done;
}
void gfx_set_init_done(int done)
{
gfx_init_done = done;
}
int display_init_required(void)
{
/* For vboot, honor VB2_CONTEXT_DISPLAY_INIT. */
if (CONFIG(VBOOT)) {
/* Must always select MUST_REQUEST_DISPLAY when using this
function. */
if (!CONFIG(VBOOT_MUST_REQUEST_DISPLAY))
dead_code();
return vboot_get_context()->flags & VB2_CONTEXT_DISPLAY_INIT;
}
/* By default always initialize display. */
return 1;
}