
On Tue, 3 Sept 2024 at 22:37, Michal Simek michal.simek@amd.com wrote:
On 8/30/24 13:40, Sughosh Ganu wrote:
In the version 2 of the FWU metadata, the metadata is broken into two parts, a top-level structure, which provides information on the total size of the structure among other things. Try reading the primary partition first, and if that fails, try reading the secondary partition. This will help in the scenario where the primary metadata partition has been corrupted, but the secondary partition is intact.
Signed-off-by: Sughosh Ganu sughosh.ganu@linaro.org
lib/fwu_updates/fwu_v2.c | 77 +++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 36 deletions(-)
diff --git a/lib/fwu_updates/fwu_v2.c b/lib/fwu_updates/fwu_v2.c index d0d8a25929..69306282aa 100644 --- a/lib/fwu_updates/fwu_v2.c +++ b/lib/fwu_updates/fwu_v2.c @@ -10,6 +10,12 @@ #include <linux/types.h>
#define FWU_MDATA_VERSION 0x2U +#define FWU_IMG_DESC_OFFSET 0x20U
+static struct fwu_mdata g_mdata;
+#define PRI_PART 0x1U +#define SEC_PART 0x2U
static inline struct fwu_fw_store_desc *fwu_get_fw_desc(struct fwu_mdata *mdata) { @@ -109,6 +115,31 @@ static int fwu_trial_state_start(uint update_index) return 0; }
+static bool fwu_get_mdata_mandatory(uint part) +{
int ret = 0;
struct udevice *fwu_dev = fwu_get_dev();
memset(&g_mdata, 0, sizeof(struct fwu_mdata));
ret = fwu_read_mdata(fwu_dev, &g_mdata,
part == PRI_PART ? true : false,
sizeof(struct fwu_mdata));
if (ret)
return false;
if (g_mdata.version != FWU_MDATA_VERSION)
return false;
Any reason to remove error logs which were here?
They just got dropped during the code refactor. Will put them back. Thanks.
-sughosh