security/vboot: Remove selected_region from struct vboot_working_data
Since we already have pre-RAM cache for FMAP (CB:36657), calling load_firmware() multiple times is no longer a problem. This patch replaces vboot_get_selected_region() usage with vboot_locate_firmware(), which locates the firmware by reading from the CBMEM cache. In addition, returning false from vboot_is_slot_selected() implies the recovery path was requested, i.e., vb2_shared_data.recovery_reason was set. Therefore, we simply remove the vboot_is_slot_selected() check from vboot_check_recovery_request(). BRANCH=none BUG=chromium:1021452 TEST=emerge-kukui coreboot Change-Id: I27cb1a2175beb189053fc3e44b17b60aba474bb0 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36845 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
ea544574d0
commit
aeb652a4a0
@ -23,11 +23,6 @@
|
||||
struct vb2_context;
|
||||
struct vb2_shared_data;
|
||||
|
||||
struct selected_region {
|
||||
uint32_t offset;
|
||||
uint32_t size;
|
||||
};
|
||||
|
||||
/*
|
||||
* Stores vboot-related information. selected_region is used by verstage to
|
||||
* store the location of the selected slot. buffer is used by vboot to store
|
||||
@ -36,7 +31,6 @@ struct selected_region {
|
||||
* Keep the struct CPU architecture agnostic as it crosses stage boundaries.
|
||||
*/
|
||||
struct vboot_working_data {
|
||||
struct selected_region selected_region;
|
||||
/* offset of the buffer from the start of this struct */
|
||||
uint16_t buffer_offset;
|
||||
};
|
||||
@ -47,11 +41,19 @@ struct vboot_working_data {
|
||||
struct vboot_working_data *vboot_get_working_data(void);
|
||||
struct vb2_context *vboot_get_context(void);
|
||||
|
||||
/* Returns 0 on success. < 0 on failure. */
|
||||
int vboot_get_selected_region(struct region *region);
|
||||
/*
|
||||
* Returns 1 if firmware slot A is used, 0 if slot B is used.
|
||||
*/
|
||||
static inline int vboot_is_firmware_slot_a(const struct vb2_context *ctx)
|
||||
{
|
||||
return !(ctx->flags & VB2_CONTEXT_FW_SLOT_B);
|
||||
}
|
||||
|
||||
void vboot_set_selected_region(const struct region *region);
|
||||
int vboot_is_slot_selected(void);
|
||||
/*
|
||||
* Locates firmware as a region device. Returns 0 on success, -1 on failure.
|
||||
*/
|
||||
int vboot_locate_firmware(const struct vb2_context *ctx,
|
||||
struct region_device *fw);
|
||||
|
||||
/*
|
||||
* Source: security/vboot/vboot_handoff.c
|
||||
|
Reference in New Issue
Block a user