1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- From dce70fb042d91ba74359a6dfb519f31d77e2c328 Mon Sep 17 00:00:00 2001
- From: Paul Kocialkowski <contact@paulk.fr>
- Date: Mon, 10 Aug 2015 20:24:50 +0200
- Subject: [PATCH 5/7] Proper firmware index report for read-only boot path
- When booting from a read-only boot path, the active firmware to report is RO.
- This is detected with the lack of a vboot handoff pointer.
- Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
- ---
- src/vboot/crossystem/fdt.c | 2 +-
- src/vboot/firmware_id.c | 6 +++++-
- src/vboot/firmware_id.h | 1 +
- 3 files changed, 7 insertions(+), 2 deletions(-)
- diff --git a/src/vboot/crossystem/fdt.c b/src/vboot/crossystem/fdt.c
- index ca39dac..a79b192 100644
- --- a/src/vboot/crossystem/fdt.c
- +++ b/src/vboot/crossystem/fdt.c
- @@ -73,7 +73,7 @@ static int install_crossystem_data(DeviceTreeFixup *fixup, DeviceTree *tree)
- nvstorage_flash_get_blob_size());
- }
-
- - int fw_index = vdat->firmware_index;
- + int fw_index = get_active_fw_index(vdat);
- const char *fwid;
- int fwid_size;
-
- diff --git a/src/vboot/firmware_id.c b/src/vboot/firmware_id.c
- index 3662921..955bc84 100644
- --- a/src/vboot/firmware_id.c
- +++ b/src/vboot/firmware_id.c
- @@ -36,6 +36,7 @@ static struct fwid {
- } fw_fmap_ops[] = {
- {VDAT_RW_A, "RW_FWID_A", NULL, 0, "RW A: ID NOT FOUND"},
- {VDAT_RW_B, "RW_FWID_B", NULL, 0, "RW B: ID NOT FOUND"},
- + {VDAT_RO, "RO_FRID", NULL, 0, "RO: ID NOT FOUND"},
- {VDAT_RECOVERY, "RO_FRID", NULL, 0, "RO: ID NOT FOUND"},
- };
-
- @@ -130,10 +131,13 @@ static VbSharedDataHeader *get_vdat(void)
- return NULL;
- }
-
- -static inline int get_active_fw_index(VbSharedDataHeader *vdat)
- +int get_active_fw_index(VbSharedDataHeader *vdat)
- {
- int fw_index = VDAT_UNKNOWN;
-
- + if (lib_sysinfo.vboot_handoff == NULL)
- + return VDAT_RO;
- +
- if (vdat)
- fw_index = vdat->firmware_index;
-
- diff --git a/src/vboot/firmware_id.h b/src/vboot/firmware_id.h
- index fb6f206..090e9d1 100644
- --- a/src/vboot/firmware_id.h
- +++ b/src/vboot/firmware_id.h
- @@ -49,6 +49,7 @@ int get_rwb_fw_size(void);
- * Get firmware details for currently active fw type. It looks up vdat,
- * identifies fw_index and returns appropriate id and size for that index.
- */
- +int get_active_fw_index(VbSharedDataHeader *vdat);
- const char *get_active_fw_id(void);
- int get_active_fw_size(void);
-
- --
- 1.9.1
|