summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhang sanshan <sanshan.zhang@nxp.com>2018-02-12 17:38:25 +0800
committerzhang sanshan <sanshan.zhang@nxp.com>2018-02-23 14:01:45 +0800
commit56fcf7cb1ce76f3413c130371ae884e7209f66a0 (patch)
treece611594aad4dd75790f600a51d96a74798a548a
parentd90d96134ac720c16262f13f30ee65e52314b27b (diff)
downloaduboot-imx-56fcf7cb1ce76f3413c130371ae884e7209f66a0.tar.gz
MA-11365-3 [Android] enable dm-verity based on AVB
system will append dm kernel parameter into cmdline if it can verity vbmeta successfully. Add system partition fo 'root=' if avb verity fail. Change-Id: I3ed84a54fc4f29efddb68b4eb97bef98dd6a19c0 Signed-off-by: zhang sanshan <sanshan.zhang@nxp.com>
-rwxr-xr-xdrivers/usb/gadget/f_fastboot.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index e8a8f84457..0745ef2e4f 100755
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -1433,7 +1433,7 @@ static FbBootMode fastboot_get_bootmode(void)
#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
/* Setup booargs for taking the system parition as ramdisk */
-static void fastboot_setup_system_boot_args(const char *slot)
+static void fastboot_setup_system_boot_args(const char *slot, bool append_root)
{
const char *system_part_name = NULL;
if(slot == NULL)
@@ -1448,10 +1448,14 @@ static void fastboot_setup_system_boot_args(const char *slot)
if(ptentry != NULL) {
char bootargs_3rd[ANDR_BOOT_ARGS_SIZE];
#if defined(CONFIG_FASTBOOT_STORAGE_MMC)
- u32 dev_no = mmc_map_to_kernel_blk(mmc_get_env_dev());
- sprintf(bootargs_3rd, "skip_initramfs root=/dev/mmcblk%dp%d",
- dev_no,
- ptentry->partition_index);
+ if (append_root) {
+ u32 dev_no = mmc_map_to_kernel_blk(mmc_get_env_dev());
+ sprintf(bootargs_3rd, "skip_initramfs root=/dev/mmcblk%dp%d",
+ dev_no,
+ ptentry->partition_index);
+ } else {
+ sprintf(bootargs_3rd, "skip_initramfs");
+ }
setenv("bootargs_3rd", bootargs_3rd);
#endif
}
@@ -1590,8 +1594,12 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
}
setenv("bootargs_sec", bootargs_sec);
#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
- if(!is_recovery_mode)
- fastboot_setup_system_boot_args(avb_out_data->ab_suffix);
+ if(!is_recovery_mode) {
+ if(avb_out_data->cmdline != NULL && strstr(avb_out_data->cmdline, "root="))
+ fastboot_setup_system_boot_args(avb_out_data->ab_suffix, false);
+ else
+ fastboot_setup_system_boot_args(avb_out_data->ab_suffix, true);
+ }
#endif
image_size = avb_loadpart->data_size;
} else if (lock_status == FASTBOOT_LOCK) { /* && verify fail */
@@ -1640,7 +1648,7 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
setenv("bootargs_sec", bootargs_sec);
#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
if(!is_recovery_mode)
- fastboot_setup_system_boot_args(slot);
+ fastboot_setup_system_boot_args(slot, true);
#endif
#ifdef CONFIG_FASTBOOT_LOCK
}