summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJi Luo <ji.luo@nxp.com>2019-03-12 16:15:54 +0800
committerJi Luo <ji.luo@nxp.com>2019-03-12 17:31:09 +0800
commit30beee3fe6d4b35166c6e17203909231d33bc2db (patch)
tree99cf66d3514ff58785db17556f322e40d21838df /lib
parent6c5a2fc34ba08eb4c990ee9044fc1dfd9ecbd04f (diff)
MA-14318-1 Support dual bootloader for xen
Trusty is not supported for xen so we don't need to check the keyslot package or rollback index in spl. Reassign the dram address for spl and u-boot to avoid conflicts. Support serial init functions to enable debug console in spl when xen is running. Test: Boot and A/B slot switch on imx8qm_mek. Change-Id: If6829252f1ec2e32255f951715c8747181951fd0 Signed-off-by: Ji Luo <ji.luo@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/avb/fsl/fsl_avb_ab_flow.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/avb/fsl/fsl_avb_ab_flow.c b/lib/avb/fsl/fsl_avb_ab_flow.c
index efe202b644..0dc6850434 100644
--- a/lib/avb/fsl/fsl_avb_ab_flow.c
+++ b/lib/avb/fsl/fsl_avb_ab_flow.c
@@ -214,6 +214,7 @@ int fsl_load_metadata_dual_uboot(struct blk_desc *dev_desc,
}
}
+#ifndef CONFIG_XEN
static int spl_verify_rbidx(struct mmc *mmc, AvbABSlotData *slot,
struct spl_image_info *spl_image)
{
@@ -273,6 +274,7 @@ static int spl_verify_rbidx(struct mmc *mmc, AvbABSlotData *slot,
}
}
+#endif /* CONFIG_XEN */
#ifdef CONFIG_PARSE_CONTAINER
int mmc_load_image_parse_container_dual_uboot(
@@ -284,7 +286,9 @@ int mmc_load_image_parse_container_dual_uboot(
struct blk_desc *dev_desc;
AvbABData ab_data, ab_data_orig;
size_t slot_index_to_boot, target_slot;
+#ifndef CONFIG_XEN
struct keyslot_package kp;
+#endif
/* Check if gpt is valid */
dev_desc = mmc_get_blk_desc(mmc);
@@ -298,7 +302,8 @@ int mmc_load_image_parse_container_dual_uboot(
return -1;
}
- /* Read RPMB keyslot package */
+#ifndef CONFIG_XEN
+ /* Read RPMB keyslot package, xen won't check this. */
read_keyslot_package(&kp);
if (strcmp(kp.magic, KEYPACK_MAGIC)) {
if (rpmbkey_is_set()) {
@@ -313,6 +318,8 @@ int mmc_load_image_parse_container_dual_uboot(
return -1;
}
}
+#endif
+
/* Load AB metadata from misc partition */
if (fsl_load_metadata_dual_uboot(dev_desc, &ab_data,
&ab_data_orig)) {
@@ -342,6 +349,8 @@ int mmc_load_image_parse_container_dual_uboot(
} else {
ret = mmc_load_image_parse_container(spl_image, mmc, info.start);
+ /* Don't need to check rollback index for xen. */
+#ifndef CONFIG_XEN
/* Image loaded successfully, go to verify rollback index */
if (!ret && rpmbkey_is_set())
ret = spl_verify_rbidx(mmc, &ab_data.slots[target_slot], spl_image);
@@ -349,6 +358,7 @@ int mmc_load_image_parse_container_dual_uboot(
/* Copy rpmb keyslot to secure memory. */
if (!ret)
fill_secure_keyslot_package(&kp);
+#endif
}
/* Set current slot to unbootable if load/verify fail. */