app: aboot: Dynamic partition support for update commandline
Change to update commandline to support dynamic partitions,
enablement.
Change-Id: Ia302e7199023d889a794a5c3ea8bd713ece3da54
Signed-off-by: Mayank Grover <groverm@codeaurora.org>
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index ea90598..584ba35 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -162,6 +162,8 @@
#else
static const char *emmc_cmdline = " androidboot.emmc=true";
#endif
+static const char *dynamic_bootdev_cmdline =
+ " androidboot.boot_devices=soc/";
static const char *usb_sn_cmdline = " androidboot.serialno=";
static const char *androidboot_mode = " androidboot.mode=";
@@ -484,12 +486,19 @@
}
if (target_is_emmc_boot()) {
cmdline_len += strlen(emmc_cmdline);
-#if USE_BOOTDEV_CMDLINE
boot_dev_buf = (char *) malloc(sizeof(char) * BOOT_DEV_MAX_LEN);
- ASSERT(boot_dev_buf);
- platform_boot_dev_cmdline(boot_dev_buf);
- cmdline_len += strlen(boot_dev_buf);
+ if (!boot_dev_buf) {
+ dprintf(CRITICAL, "ERROR: Failed to allocate boot_dev_buf\n");
+ } else {
+ platform_boot_dev_cmdline(boot_dev_buf);
+#if USE_BOOTDEV_CMDLINE
+ cmdline_len += strlen(boot_dev_buf);
#endif
+ if (target_dynamic_partition_supported()) {
+ cmdline_len += strlen(dynamic_bootdev_cmdline);
+ cmdline_len += strlen(boot_dev_buf);
+ }
+ }
}
cmdline_len += strlen(usb_sn_cmdline);
@@ -663,7 +672,10 @@
partition_multislot_is_supported())
{
cmdline_len += strlen(sys_path_cmdline);
- if (!boot_into_recovery)
+
+ /* For dynamic partition, support skip skip_initramfs */
+ if (!target_dynamic_partition_supported() &&
+ !boot_into_recovery)
cmdline_len += strlen(skip_ramfs);
}
@@ -723,9 +735,22 @@
while ((*dst++ = *src++));
#if USE_BOOTDEV_CMDLINE
src = boot_dev_buf;
- if (have_cmdline) --dst;
- while ((*dst++ = *src++));
+ if (have_cmdline &&
+ boot_dev_buf) {
+ --dst;
+ while ((*dst++ = *src++));
+ }
#endif
+ /* Dynamic partition append boot_devices */
+ if (target_dynamic_partition_supported() &&
+ boot_dev_buf) {
+ src = dynamic_bootdev_cmdline;
+ if (have_cmdline) --dst;
+ while ((*dst++ = *src++));
+ src = boot_dev_buf;
+ if (have_cmdline) --dst;
+ while ((*dst++ = *src++));
+ }
}
#if VERIFIED_BOOT
@@ -923,7 +948,8 @@
partition_multislot_is_supported()) &&
have_cmdline)
{
- if (!boot_into_recovery)
+ if (!target_dynamic_partition_supported() &&
+ !boot_into_recovery)
{
src = skip_ramfs;
--dst;