u-boot-amlogic archives
 help / color / mirror / Atom feed
* [PATCH 0/9] meson64_android: Android boot flow using abootimg
@ 2021-08-05 15:17 Mattijs Korpershoek
  2021-08-05 15:17 ` [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN Mattijs Korpershoek
                   ` (10 more replies)
  0 siblings, 11 replies; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong; +Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek

The SEI-610 and SEI-510 boards are well supported in the
Android Open Source project via the yukawa [1] platform.

Their U-Boot version, despite being public [2] is not in mainline.

Android 10 and higher have significantly reworked the bootloader
requirements:

* bootloader should pass slot information in case of A/B
* bootloader should perform AVB verification in case it's supported
* bootloader should read and apply dtb overlays from a dtbo partition

These series add support for all the above.

[1] https://android.googlesource.com/device/amlogic/yukawa
[2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ

Guillaume La Roque (2):
  configs: meson64_android: boot android via abootimg
  configs: sei510/610: android bootflow via abootimg

Mattijs Korpershoek (7):
  configs: meson64: permit redefining SYS_MALLOC_LEN
  configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB
  configs: meson64_android: implement AVB support
  configs: meson64_android: implement A/B slot support
  configs: meson64_android: define BOOT_CMD macro
  configs: sei510/sei610: reformat PARTS_default
  configs: sei510/sei610: don't use hard-coded gpt uuids

 configs/sei510_defconfig          |   5 ++
 configs/sei610_defconfig          |   5 ++
 include/configs/meson64.h         |   2 +
 include/configs/meson64_android.h | 139 ++++++++++++++++++++++++++++--
 include/configs/sei510.h          |  23 +++--
 include/configs/sei610.h          |  23 +++--
 6 files changed, 165 insertions(+), 32 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:20   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB Mattijs Korpershoek
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek, Guillaume La Roque

Permit redefining SYS_MALLOC_LEN for board specific configs.
This is especially useful for Android with AVB, which requires a malloc
length of 128M.

Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/configs/meson64.h b/include/configs/meson64.h
index fb7f16d148..f9bb0240d2 100644
--- a/include/configs/meson64.h
+++ b/include/configs/meson64.h
@@ -32,7 +32,9 @@
 #define CONFIG_CPU_ARMV8
 #define CONFIG_REMAKE_ELF
 #define CONFIG_SYS_MAXARGS		32
+#ifndef CONFIG_SYS_MALLOC_LEN
 #define CONFIG_SYS_MALLOC_LEN		(32 << 20)
+#endif
 #define CONFIG_SYS_CBSIZE		1024
 
 #define CONFIG_SYS_SDRAM_BASE		0
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
  2021-08-05 15:17 ` [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:20   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 3/9] configs: meson64_android: implement AVB support Mattijs Korpershoek
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong; +Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek

To prepare for AVB support, increase SYS_MALLOC_LEN to 128M.
This value has been found by testing the following on khadas vim3l:
  => avb init
  => avb verify

Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64_android.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
index f9f2b26416..bc3ffb9ca5 100644
--- a/include/configs/meson64_android.h
+++ b/include/configs/meson64_android.h
@@ -9,6 +9,10 @@
 #ifndef __MESON64_ANDROID_CONFIG_H
 #define __MESON64_ANDROID_CONFIG_H
 
+#include <linux/sizes.h>
+
+#define CONFIG_SYS_MALLOC_LEN	       SZ_128M
+
 #ifndef BOOT_PARTITION
 #define BOOT_PARTITION "boot"
 #endif
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 3/9] configs: meson64_android: implement AVB support
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
  2021-08-05 15:17 ` [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN Mattijs Korpershoek
  2021-08-05 15:17 ` [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:20   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 4/9] configs: meson64_android: implement A/B slot support Mattijs Korpershoek
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek, Guillaume La Roque

AVB (Android Verified Boot) is well supported in U-Boot already.
Add support for it in meson64_android.

This is controlled by the "force_avb" environment variable and the
CONFIG_CMD_AVB option.

Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64_android.h | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
index bc3ffb9ca5..48a23b6e41 100644
--- a/include/configs/meson64_android.h
+++ b/include/configs/meson64_android.h
@@ -27,6 +27,25 @@
 
 #ifndef RECOVERY_PARTITION
 #define RECOVERY_PARTITION "recovery"
+
+#if defined(CONFIG_CMD_AVB)
+#define AVB_VERIFY_CHECK \
+	"if test \"${force_avb}\" -eq 1; then " \
+		"if run avb_verify; then " \
+			"echo AVB verification OK.;" \
+			"setenv bootargs \"$bootargs $avb_bootargs\";" \
+		"else " \
+			"echo AVB verification failed.;" \
+		"exit; fi;" \
+	"else " \
+		"setenv bootargs \"$bootargs androidboot.verifiedbootstate=orange\";" \
+		"echo Running without AVB...; "\
+	"fi;"
+
+#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify;\0"
+#else
+#define AVB_VERIFY_CHECK ""
+#define AVB_VERIFY_CMD ""
 #endif
 
 #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
@@ -93,6 +112,7 @@
 			"echo Running Recovery...;" \
 			"mmc dev ${mmcdev};" \
 			"setenv bootargs \"${bootargs} androidboot.serialno=${serial#}\";" \
+			AVB_VERIFY_CHECK \
 			"part start mmc ${mmcdev} " RECOVERY_PARTITION " boot_start;" \
 			"part size mmc ${mmcdev} " RECOVERY_PARTITION " boot_size;" \
 			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
@@ -111,6 +131,7 @@
 		"echo Loading Android " BOOT_PARTITION " partition...;" \
 		"mmc dev ${mmcdev};" \
 		"setenv bootargs ${bootargs} androidboot.serialno=${serial#};" \
+		AVB_VERIFY_CHECK \
 		"part start mmc ${mmcdev} " BOOT_PARTITION " boot_start;" \
 		"part size mmc ${mmcdev} " BOOT_PARTITION " boot_size;" \
 		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
@@ -142,6 +163,8 @@
 #define CONFIG_EXTRA_ENV_SETTINGS                                     \
 	"partitions=" PARTS_DEFAULT "\0"                              \
 	"mmcdev=2\0"                                                  \
+	AVB_VERIFY_CMD                                                \
+	"force_avb=0\0"                                               \
 	"gpio_recovery=88\0"                                          \
 	"check_button=gpio input ${gpio_recovery};test $? -eq 0;\0"   \
 	"load_logo=" PREBOOT_LOAD_LOGO "\0"			      \
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 4/9] configs: meson64_android: implement A/B slot support
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (2 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 3/9] configs: meson64_android: implement AVB support Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro Mattijs Korpershoek
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek, Guillaume La Roque

Implement A/B slot selection using the U-Boot ab_select command.

Keep support for non A/B.

Not: We need to redefine the recovery partition label, as RecoveryOS
is included in the boot image for A/B systems [1]

[1] https://source.android.com/devices/tech/ota/ab/ab_implement#recovery
Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64_android.h | 55 ++++++++++++++++++++++++++-----
 1 file changed, 47 insertions(+), 8 deletions(-)

diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
index 48a23b6e41..83fa25bfb1 100644
--- a/include/configs/meson64_android.h
+++ b/include/configs/meson64_android.h
@@ -25,9 +25,6 @@
 #define CONTROL_PARTITION "misc"
 #endif
 
-#ifndef RECOVERY_PARTITION
-#define RECOVERY_PARTITION "recovery"
-
 #if defined(CONFIG_CMD_AVB)
 #define AVB_VERIFY_CHECK \
 	"if test \"${force_avb}\" -eq 1; then " \
@@ -42,12 +39,48 @@
 		"echo Running without AVB...; "\
 	"fi;"
 
-#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify;\0"
+#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify $slot_suffix;\0"
 #else
 #define AVB_VERIFY_CHECK ""
 #define AVB_VERIFY_CMD ""
 #endif
 
+#if defined(CONFIG_CMD_AB_SELECT)
+#define ANDROIDBOOT_GET_CURRENT_SLOT_CMD "get_current_slot=" \
+	"if part number mmc ${mmcdev} " CONTROL_PARTITION " control_part_number; " \
+	"then " \
+		"echo " CONTROL_PARTITION \
+			" partition number:${control_part_number};" \
+		"ab_select current_slot mmc ${mmcdev}:${control_part_number};" \
+	"else " \
+		"echo " CONTROL_PARTITION " partition not found;" \
+	"fi;\0"
+
+#define AB_SELECT_SLOT \
+	"run get_current_slot; " \
+	"if test -e \"${current_slot}\"; " \
+	"then " \
+		"setenv slot_suffix _${current_slot}; " \
+	"else " \
+		"echo current_slot not found;" \
+		"exit;" \
+	"fi;"
+
+#define AB_SELECT_ARGS \
+	"setenv bootargs_ab androidboot.slot_suffix=${slot_suffix}; " \
+	"echo A/B cmdline addition: ${bootargs_ab};" \
+	"setenv bootargs ${bootargs} ${bootargs_ab};"
+
+#define AB_BOOTARGS " androidboot.force_normal_boot=1"
+#define RECOVERY_PARTITION "boot"
+#else
+#define AB_SELECT_SLOT ""
+#define AB_SELECT_ARGS " "
+#define ANDROIDBOOT_GET_CURRENT_SLOT_CMD ""
+#define AB_BOOTARGS " "
+#define RECOVERY_PARTITION "recovery"
+#endif
+
 #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
 	"bootcmd_fastboot=" \
 		"setenv run_fastboot 0;" \
@@ -112,9 +145,11 @@
 			"echo Running Recovery...;" \
 			"mmc dev ${mmcdev};" \
 			"setenv bootargs \"${bootargs} androidboot.serialno=${serial#}\";" \
+			AB_SELECT_SLOT \
+			AB_SELECT_ARGS \
 			AVB_VERIFY_CHECK \
-			"part start mmc ${mmcdev} " RECOVERY_PARTITION " boot_start;" \
-			"part size mmc ${mmcdev} " RECOVERY_PARTITION " boot_size;" \
+			"part start mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_start;" \
+			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
 			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
 				"echo Running Android Recovery...;" \
 				"bootm ${loadaddr};" \
@@ -131,10 +166,13 @@
 		"echo Loading Android " BOOT_PARTITION " partition...;" \
 		"mmc dev ${mmcdev};" \
 		"setenv bootargs ${bootargs} androidboot.serialno=${serial#};" \
+		AB_SELECT_SLOT \
+		AB_SELECT_ARGS \
 		AVB_VERIFY_CHECK \
-		"part start mmc ${mmcdev} " BOOT_PARTITION " boot_start;" \
-		"part size mmc ${mmcdev} " BOOT_PARTITION " boot_size;" \
+		"part start mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_start;" \
+		"part size mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_size;" \
 		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
+			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
 			"echo Running Android...;" \
 			"bootm ${loadaddr};" \
 		"fi;" \
@@ -163,6 +201,7 @@
 #define CONFIG_EXTRA_ENV_SETTINGS                                     \
 	"partitions=" PARTS_DEFAULT "\0"                              \
 	"mmcdev=2\0"                                                  \
+	ANDROIDBOOT_GET_CURRENT_SLOT_CMD                              \
 	AVB_VERIFY_CMD                                                \
 	"force_avb=0\0"                                               \
 	"gpio_recovery=88\0"                                          \
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (3 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 4/9] configs: meson64_android: implement A/B slot support Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 6/9] configs: meson64_android: boot android via abootimg Mattijs Korpershoek
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek, Guillaume La Roque

BOOT_CMD might be different based on CONFIG_CMD_ABOOTIMG.

To prepare for abootimg support, extract the boot command
to a dedicated macro.

Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64_android.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
index 83fa25bfb1..0ce616c17e 100644
--- a/include/configs/meson64_android.h
+++ b/include/configs/meson64_android.h
@@ -81,6 +81,8 @@
 #define RECOVERY_PARTITION "recovery"
 #endif
 
+#define BOOT_CMD "bootm ${loadaddr};"
+
 #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
 	"bootcmd_fastboot=" \
 		"setenv run_fastboot 0;" \
@@ -152,7 +154,7 @@
 			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
 			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
 				"echo Running Android Recovery...;" \
-				"bootm ${loadaddr};" \
+				BOOT_CMD \
 			"fi;" \
 			"echo Failed to boot Android...;" \
 			"reset;" \
@@ -174,7 +176,7 @@
 		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
 			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
 			"echo Running Android...;" \
-			"bootm ${loadaddr};" \
+			BOOT_CMD \
 		"fi;" \
 		"echo Failed to boot Android...;" \
 		"reset\0"
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 6/9] configs: meson64_android: boot android via abootimg
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (4 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default Mattijs Korpershoek
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Guillaume La Roque, Mattijs Korpershoek

From: Guillaume La Roque <glaroque@baylibre.com>

Since Android 10, we are required to use a "dtbo" partition which
includes the various device-tree overlays [1].
It's also possible to provide a "dtb" partition.

This is supported via the "abootimg" command.

On Yukawa, the assumption is that we have only a "dtbo" partition, which
includes all board dtbs and their dtbos [2]

[1] https://source.android.com/devices/architecture/dto/partitions
[2] https://android.googlesource.com/device/amlogic/yukawa/+/refs/heads/master/build/tasks/dtimages.mk#16
Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/meson64_android.h | 57 ++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
index 0ce616c17e..358e0a5c71 100644
--- a/include/configs/meson64_android.h
+++ b/include/configs/meson64_android.h
@@ -81,7 +81,59 @@
 #define RECOVERY_PARTITION "recovery"
 #endif
 
+#if defined(CONFIG_CMD_ABOOTIMG)
+/*
+ * Prepares complete device tree blob for current board (for Android boot).
+ *
+ * Boot image or recovery image should be loaded into $loadaddr prior to running
+ * these commands. The logic of these commnads is next:
+ *
+ *   1. Read correct DTB for current SoC/board from boot image in $loadaddr
+ *      to $fdtaddr
+ *   2. Merge all needed DTBO for current board from 'dtbo' partition into read
+ *      DTB
+ *   3. User should provide $fdtaddr as 3rd argument to 'bootm'
+ */
+#define PREPARE_FDT \
+	"echo Preparing FDT...; " \
+	"if test $board_name = sei510; then " \
+		"echo \"  Reading DTB for sei510...\"; " \
+		"setenv dtb_index 0;" \
+	"elif test $board_name = sei610; then " \
+		"echo \"  Reading DTB for sei610...\"; " \
+		"setenv dtb_index 1;" \
+	"else " \
+		"echo Error: Android boot is not supported for $board_name; " \
+		"exit; " \
+	"fi; " \
+	"abootimg get dtb --index=$dtb_index dtb_start dtb_size; " \
+	"cp.b $dtb_start $fdt_addr_r $dtb_size; " \
+	"fdt addr $fdt_addr_r  0x80000; " \
+	"if test $board_name = sei510; then " \
+		"echo \"  Reading DTBO for sei510...\"; " \
+		"setenv dtbo_index 0;" \
+	"elif test $board_name = sei610; then " \
+		"echo \"  Reading DTBO for sei610...\"; " \
+		"setenv dtbo_index 1;" \
+	"else " \
+		"echo Error: Android boot is not supported for $board_name; " \
+		"exit; " \
+	"fi; " \
+	"part start mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_start; " \
+	"part size mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_size; " \
+	"mmc read ${dtboaddr} ${p_dtbo_start} ${p_dtbo_size}; " \
+	"echo \"  Applying DTBOs...\"; " \
+	"adtimg addr $dtboaddr; " \
+	"adtimg get dt --index=$dtbo_index dtbo0_addr; " \
+	"fdt apply $dtbo0_addr;" \
+	"setenv bootargs \"$bootargs androidboot.dtbo_idx=$dtbo_index \";"\
+
+#define BOOT_CMD "bootm ${loadaddr} ${loadaddr} ${fdt_addr_r};"
+
+#else
+#define PREPARE_FDT " "
 #define BOOT_CMD "bootm ${loadaddr};"
+#endif
 
 #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
 	"bootcmd_fastboot=" \
@@ -153,6 +205,7 @@
 			"part start mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_start;" \
 			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
 			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
+				PREPARE_FDT \
 				"echo Running Android Recovery...;" \
 				BOOT_CMD \
 			"fi;" \
@@ -174,6 +227,7 @@
 		"part start mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_start;" \
 		"part size mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_size;" \
 		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
+			PREPARE_FDT \
 			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
 			"echo Running Android...;" \
 			BOOT_CMD \
@@ -212,7 +266,8 @@
 	"stdin=" STDIN_CFG "\0"                                       \
 	"stdout=" STDOUT_CFG "\0"                                     \
 	"stderr=" STDOUT_CFG "\0"                                     \
-	"loadaddr=0x01000000\0"                                       \
+	"dtboaddr=0x08200000\0"                                       \
+	"loadaddr=0x01080000\0"                                       \
 	"fdt_addr_r=0x01000000\0"                                     \
 	"scriptaddr=0x08000000\0"                                     \
 	"kernel_addr_r=0x01080000\0"                                  \
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (5 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 6/9] configs: meson64_android: boot android via abootimg Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids Mattijs Korpershoek
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong; +Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek

There is a mix of spaces and tabs at the leading \. This makes updating
theses lines harder.

Add a single space before each \ for some consistency.

Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/sei510.h | 14 +++++++-------
 include/configs/sei610.h | 14 +++++++-------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/configs/sei510.h b/include/configs/sei510.h
index d37b4c6405..16a34c717d 100644
--- a/include/configs/sei510.h
+++ b/include/configs/sei510.h
@@ -16,14 +16,14 @@
 #define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
 #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
 
-#define PARTS_DEFAULT                                        \
-	"uuid_disk=${uuid_gpt_disk};"  			\
+#define PARTS_DEFAULT \
+	"uuid_disk=${uuid_gpt_disk};" \
 	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
-	"name=logo,size=2M,uuid=" LOGO_UUID             \
-	"name=cache,size=256M,uuid=" CACHE_UUID             \
-	"name=system,size=1536M,uuid=" SYSTEM_UUID           \
-	"name=vendor,size=256M,uuid=" VENDOR_UUID            \
-	"name=userdata,size=5341M,uuid=" USERDATA_UUID	\
+	"name=logo,size=2M,uuid=" LOGO_UUID \
+	"name=cache,size=256M,uuid=" CACHE_UUID \
+	"name=system,size=1536M,uuid=" SYSTEM_UUID \
+	"name=vendor,size=256M,uuid=" VENDOR_UUID \
+	"name=userdata,size=5341M,uuid=" USERDATA_UUID \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 
diff --git a/include/configs/sei610.h b/include/configs/sei610.h
index 9eeffdd72c..6d13fd143b 100644
--- a/include/configs/sei610.h
+++ b/include/configs/sei610.h
@@ -16,14 +16,14 @@
 #define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
 #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
 
-#define PARTS_DEFAULT                                        \
-	"uuid_disk=${uuid_gpt_disk};"  			\
+#define PARTS_DEFAULT \
+	"uuid_disk=${uuid_gpt_disk};" \
 	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
-	"name=logo,size=2M,uuid=" LOGO_UUID             \
-	"name=cache,size=256M,uuid=" CACHE_UUID             \
-	"name=system,size=1536M,uuid=" SYSTEM_UUID           \
-	"name=vendor,size=256M,uuid=" VENDOR_UUID            \
-	"name=userdata,size=12795M,uuid=" USERDATA_UUID	\
+	"name=logo,size=2M,uuid=" LOGO_UUID \
+	"name=cache,size=256M,uuid=" CACHE_UUID \
+	"name=system,size=1536M,uuid=" SYSTEM_UUID \
+	"name=vendor,size=256M,uuid=" VENDOR_UUID \
+	"name=userdata,size=12795M,uuid=" USERDATA_UUID \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 #include <configs/meson64_android.h>
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (6 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
  2021-08-05 15:17 ` [PATCH 9/9] configs: sei510/610: android bootflow via abootimg Mattijs Korpershoek
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong; +Cc: u-boot-amlogic, u-boot, Mattijs Korpershoek

doc/README.gpt states:

> The fields 'uuid' and 'uuid_disk' are optional if CONFIG_RANDOM_UUID is
> enabled. A random uuid will be used if omitted or they point to an empty/
> non-existent environment variable. The environment variable will be
> set to the generated UUID.  The 'gpt guid' command reads the current
> value of the uuid_disk from the GPT.

Since we have CONFIG_RANDOM_UUID=y, remove the hard-coded uuids
and use meaningful variable names instead.

Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 include/configs/sei510.h | 12 ++++--------
 include/configs/sei610.h | 12 ++++--------
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/include/configs/sei510.h b/include/configs/sei510.h
index 16a34c717d..5bf2668803 100644
--- a/include/configs/sei510.h
+++ b/include/configs/sei510.h
@@ -10,20 +10,16 @@
 #define __CONFIG_H
 
 #define LOGO_UUID "43a3305d-150f-4cc9-bd3b-38fca8693846;"
-#define CACHE_UUID "99207ae6-5207-11e9-999e-6f77a3612069;"
-#define SYSTEM_UUID "99f9b7ac-5207-11e9-8507-c3c037e393f3;"
-#define VENDOR_UUID "9d082802-5207-11e9-954c-cbbce08ba108;"
-#define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
 #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
 
 #define PARTS_DEFAULT \
 	"uuid_disk=${uuid_gpt_disk};" \
 	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
 	"name=logo,size=2M,uuid=" LOGO_UUID \
-	"name=cache,size=256M,uuid=" CACHE_UUID \
-	"name=system,size=1536M,uuid=" SYSTEM_UUID \
-	"name=vendor,size=256M,uuid=" VENDOR_UUID \
-	"name=userdata,size=5341M,uuid=" USERDATA_UUID \
+	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
+	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
+	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
+	"name=userdata,size=5341M,uuid={uuid_gpt_userdata};" \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 
diff --git a/include/configs/sei610.h b/include/configs/sei610.h
index 6d13fd143b..baace75a02 100644
--- a/include/configs/sei610.h
+++ b/include/configs/sei610.h
@@ -10,20 +10,16 @@
 #define __CONFIG_H
 
 #define LOGO_UUID "43a3305d-150f-4cc9-bd3b-38fca8693846;"
-#define CACHE_UUID "99207ae6-5207-11e9-999e-6f77a3612069;"
-#define SYSTEM_UUID "99f9b7ac-5207-11e9-8507-c3c037e393f3;"
-#define VENDOR_UUID "9d082802-5207-11e9-954c-cbbce08ba108;"
-#define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
 #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
 
 #define PARTS_DEFAULT \
 	"uuid_disk=${uuid_gpt_disk};" \
 	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
 	"name=logo,size=2M,uuid=" LOGO_UUID \
-	"name=cache,size=256M,uuid=" CACHE_UUID \
-	"name=system,size=1536M,uuid=" SYSTEM_UUID \
-	"name=vendor,size=256M,uuid=" VENDOR_UUID \
-	"name=userdata,size=12795M,uuid=" USERDATA_UUID \
+	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
+	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
+	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
+	"name=userdata,size=12795M,uuid=${uuid_gpt_userdata};" \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 #include <configs/meson64_android.h>
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 9/9] configs: sei510/610: android bootflow via abootimg
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (7 preceding siblings ...)
  2021-08-05 15:17 ` [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids Mattijs Korpershoek
@ 2021-08-05 15:17 ` Mattijs Korpershoek
  2021-08-05 16:21   ` Neil Armstrong
       [not found] ` <20210805172332.GO858@bill-the-cat>
  2021-08-10  8:47 ` Neil Armstrong
  10 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-05 15:17 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: u-boot-amlogic, u-boot, Guillaume La Roque, Mattijs Korpershoek

From: Guillaume La Roque <glaroque@baylibre.com>

Activate the following Kconfig options:
* AVB       for Android Verified Boot support
* ADTIMG    for merging DTBOs
* ABOOTIMG  for extracting Android boot image

Also rework the partitioning tables:
- add a misc partition to handle BCB messages
- add a dtbo partition to store various DTBOs
- add a vbmeta partition for AVB hashes
- Merge vendor and system into the "super" partition

Note: avb support is disables by default. To activate it:
 => setenv force_avb 1;
 => saveenv;

Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 configs/sei510_defconfig |  5 +++++
 configs/sei610_defconfig |  5 +++++
 include/configs/sei510.h | 11 +++++++----
 include/configs/sei610.h | 13 ++++++++-----
 4 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/configs/sei510_defconfig b/configs/sei510_defconfig
index 74328f2fd4..8099b40b55 100644
--- a/configs/sei510_defconfig
+++ b/configs/sei510_defconfig
@@ -20,7 +20,10 @@ CONFIG_PREBOOT="run load_logo"
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_MISC_INIT_R=y
+CONFIG_AVB_VERIFY=y
 # CONFIG_CMD_BDI is not set
+CONFIG_CMD_ADTIMG=y
+CONFIG_CMD_ABOOTIMG=y
 # CONFIG_CMD_IMI is not set
 CONFIG_CMD_BCB=y
 CONFIG_CMD_GPIO=y
@@ -32,6 +35,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_BMP=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_AVB=y
 CONFIG_OF_CONTROL=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
@@ -84,4 +88,5 @@ CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
 CONFIG_BMP_24BPP=y
 CONFIG_BMP_32BPP=y
+CONFIG_LIBAVB=y
 CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sei610_defconfig b/configs/sei610_defconfig
index 2a6d0e5995..e11f36ac79 100644
--- a/configs/sei610_defconfig
+++ b/configs/sei610_defconfig
@@ -20,7 +20,10 @@ CONFIG_PREBOOT="run load_logo"
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_MISC_INIT_R=y
+CONFIG_AVB_VERIFY=y
 # CONFIG_CMD_BDI is not set
+CONFIG_CMD_ADTIMG=y
+CONFIG_CMD_ABOOTIMG=y
 # CONFIG_CMD_IMI is not set
 CONFIG_CMD_BCB=y
 CONFIG_CMD_GPIO=y
@@ -32,6 +35,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_BMP=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_AVB=y
 CONFIG_OF_CONTROL=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
@@ -84,4 +88,5 @@ CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
 CONFIG_BMP_24BPP=y
 CONFIG_BMP_32BPP=y
+CONFIG_LIBAVB=y
 CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/include/configs/sei510.h b/include/configs/sei510.h
index 5bf2668803..ea91a06157 100644
--- a/include/configs/sei510.h
+++ b/include/configs/sei510.h
@@ -14,12 +14,15 @@
 
 #define PARTS_DEFAULT \
 	"uuid_disk=${uuid_gpt_disk};" \
-	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
 	"name=logo,size=2M,uuid=" LOGO_UUID \
+	"name=misc,size=128K,uuid=${uuid_gpt_misc};" \
+	"name=dtbo,size=8M,uuid=${uuid_gpt_dtbo};" \
+	"name=vbmeta,size=64K,uuid=${uuid_gpt_vbmeta};" \
+	"name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \
+	"name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \
 	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
-	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
-	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
-	"name=userdata,size=5341M,uuid={uuid_gpt_userdata};" \
+	"name=super,size=2304M,uuid=${uuid_gpt_super};" \
+	"name=userdata,size=4820M,uuid=${uuid_gpt_userdata};" \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 
diff --git a/include/configs/sei610.h b/include/configs/sei610.h
index baace75a02..783eece271 100644
--- a/include/configs/sei610.h
+++ b/include/configs/sei610.h
@@ -14,12 +14,15 @@
 
 #define PARTS_DEFAULT \
 	"uuid_disk=${uuid_gpt_disk};" \
-	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
-	"name=logo,size=2M,uuid=" LOGO_UUID \
+	"name=logo,start=512K,size=2M,uuid=" LOGO_UUID \
+	"name=misc,size=512K,uuid=${uuid_gpt_misc};" \
+	"name=dtbo,size=8M,uuid=${uuid_gpt_dtbo};" \
+	"name=vbmeta,size=512K,uuid=${uuid_gpt_vbmeta};" \
+	"name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \
+	"name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \
 	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
-	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
-	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
-	"name=userdata,size=12795M,uuid=${uuid_gpt_userdata};" \
+	"name=super,size=2304M,uuid=${uuid_gpt_super};" \
+	"name=userdata,size=12274M,uuid=${uuid_gpt_userdata};" \
 	"name=rootfs,size=-,uuid=" ROOT_UUID
 
 #include <configs/meson64_android.h>
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN
  2021-08-05 15:17 ` [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN Mattijs Korpershoek
@ 2021-08-05 16:20   ` Neil Armstrong
       [not found]     ` <20210805171601.GN858@bill-the-cat>
  0 siblings, 1 reply; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:20 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> Permit redefining SYS_MALLOC_LEN for board specific configs.
> This is especially useful for Android with AVB, which requires a malloc
> length of 128M.
> 
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/configs/meson64.h b/include/configs/meson64.h
> index fb7f16d148..f9bb0240d2 100644
> --- a/include/configs/meson64.h
> +++ b/include/configs/meson64.h
> @@ -32,7 +32,9 @@
>  #define CONFIG_CPU_ARMV8
>  #define CONFIG_REMAKE_ELF
>  #define CONFIG_SYS_MAXARGS		32
> +#ifndef CONFIG_SYS_MALLOC_LEN
>  #define CONFIG_SYS_MALLOC_LEN		(32 << 20)
> +#endif
>  #define CONFIG_SYS_CBSIZE		1024
>  
>  #define CONFIG_SYS_SDRAM_BASE		0
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB
  2021-08-05 15:17 ` [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB Mattijs Korpershoek
@ 2021-08-05 16:20   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:20 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> To prepare for AVB support, increase SYS_MALLOC_LEN to 128M.
> This value has been found by testing the following on khadas vim3l:
>   => avb init
>   => avb verify
> 
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64_android.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
> index f9f2b26416..bc3ffb9ca5 100644
> --- a/include/configs/meson64_android.h
> +++ b/include/configs/meson64_android.h
> @@ -9,6 +9,10 @@
>  #ifndef __MESON64_ANDROID_CONFIG_H
>  #define __MESON64_ANDROID_CONFIG_H
>  
> +#include <linux/sizes.h>
> +
> +#define CONFIG_SYS_MALLOC_LEN	       SZ_128M
> +
>  #ifndef BOOT_PARTITION
>  #define BOOT_PARTITION "boot"
>  #endif
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 3/9] configs: meson64_android: implement AVB support
  2021-08-05 15:17 ` [PATCH 3/9] configs: meson64_android: implement AVB support Mattijs Korpershoek
@ 2021-08-05 16:20   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:20 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> AVB (Android Verified Boot) is well supported in U-Boot already.
> Add support for it in meson64_android.
> 
> This is controlled by the "force_avb" environment variable and the
> CONFIG_CMD_AVB option.
> 
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64_android.h | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
> index bc3ffb9ca5..48a23b6e41 100644
> --- a/include/configs/meson64_android.h
> +++ b/include/configs/meson64_android.h
> @@ -27,6 +27,25 @@
>  
>  #ifndef RECOVERY_PARTITION
>  #define RECOVERY_PARTITION "recovery"
> +
> +#if defined(CONFIG_CMD_AVB)
> +#define AVB_VERIFY_CHECK \
> +	"if test \"${force_avb}\" -eq 1; then " \
> +		"if run avb_verify; then " \
> +			"echo AVB verification OK.;" \
> +			"setenv bootargs \"$bootargs $avb_bootargs\";" \
> +		"else " \
> +			"echo AVB verification failed.;" \
> +		"exit; fi;" \
> +	"else " \
> +		"setenv bootargs \"$bootargs androidboot.verifiedbootstate=orange\";" \
> +		"echo Running without AVB...; "\
> +	"fi;"
> +
> +#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify;\0"
> +#else
> +#define AVB_VERIFY_CHECK ""
> +#define AVB_VERIFY_CMD ""
>  #endif
>  
>  #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
> @@ -93,6 +112,7 @@
>  			"echo Running Recovery...;" \
>  			"mmc dev ${mmcdev};" \
>  			"setenv bootargs \"${bootargs} androidboot.serialno=${serial#}\";" \
> +			AVB_VERIFY_CHECK \
>  			"part start mmc ${mmcdev} " RECOVERY_PARTITION " boot_start;" \
>  			"part size mmc ${mmcdev} " RECOVERY_PARTITION " boot_size;" \
>  			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
> @@ -111,6 +131,7 @@
>  		"echo Loading Android " BOOT_PARTITION " partition...;" \
>  		"mmc dev ${mmcdev};" \
>  		"setenv bootargs ${bootargs} androidboot.serialno=${serial#};" \
> +		AVB_VERIFY_CHECK \
>  		"part start mmc ${mmcdev} " BOOT_PARTITION " boot_start;" \
>  		"part size mmc ${mmcdev} " BOOT_PARTITION " boot_size;" \
>  		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
> @@ -142,6 +163,8 @@
>  #define CONFIG_EXTRA_ENV_SETTINGS                                     \
>  	"partitions=" PARTS_DEFAULT "\0"                              \
>  	"mmcdev=2\0"                                                  \
> +	AVB_VERIFY_CMD                                                \
> +	"force_avb=0\0"                                               \
>  	"gpio_recovery=88\0"                                          \
>  	"check_button=gpio input ${gpio_recovery};test $? -eq 0;\0"   \
>  	"load_logo=" PREBOOT_LOAD_LOGO "\0"			      \
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 4/9] configs: meson64_android: implement A/B slot support
  2021-08-05 15:17 ` [PATCH 4/9] configs: meson64_android: implement A/B slot support Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> Implement A/B slot selection using the U-Boot ab_select command.
> 
> Keep support for non A/B.
> 
> Not: We need to redefine the recovery partition label, as RecoveryOS
> is included in the boot image for A/B systems [1]
> 
> [1] https://source.android.com/devices/tech/ota/ab/ab_implement#recovery
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64_android.h | 55 ++++++++++++++++++++++++++-----
>  1 file changed, 47 insertions(+), 8 deletions(-)
> 
> diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
> index 48a23b6e41..83fa25bfb1 100644
> --- a/include/configs/meson64_android.h
> +++ b/include/configs/meson64_android.h
> @@ -25,9 +25,6 @@
>  #define CONTROL_PARTITION "misc"
>  #endif
>  
> -#ifndef RECOVERY_PARTITION
> -#define RECOVERY_PARTITION "recovery"
> -
>  #if defined(CONFIG_CMD_AVB)
>  #define AVB_VERIFY_CHECK \
>  	"if test \"${force_avb}\" -eq 1; then " \
> @@ -42,12 +39,48 @@
>  		"echo Running without AVB...; "\
>  	"fi;"
>  
> -#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify;\0"
> +#define AVB_VERIFY_CMD "avb_verify=avb init ${mmcdev}; avb verify $slot_suffix;\0"
>  #else
>  #define AVB_VERIFY_CHECK ""
>  #define AVB_VERIFY_CMD ""
>  #endif
>  
> +#if defined(CONFIG_CMD_AB_SELECT)
> +#define ANDROIDBOOT_GET_CURRENT_SLOT_CMD "get_current_slot=" \
> +	"if part number mmc ${mmcdev} " CONTROL_PARTITION " control_part_number; " \
> +	"then " \
> +		"echo " CONTROL_PARTITION \
> +			" partition number:${control_part_number};" \
> +		"ab_select current_slot mmc ${mmcdev}:${control_part_number};" \
> +	"else " \
> +		"echo " CONTROL_PARTITION " partition not found;" \
> +	"fi;\0"
> +
> +#define AB_SELECT_SLOT \
> +	"run get_current_slot; " \
> +	"if test -e \"${current_slot}\"; " \
> +	"then " \
> +		"setenv slot_suffix _${current_slot}; " \
> +	"else " \
> +		"echo current_slot not found;" \
> +		"exit;" \
> +	"fi;"
> +
> +#define AB_SELECT_ARGS \
> +	"setenv bootargs_ab androidboot.slot_suffix=${slot_suffix}; " \
> +	"echo A/B cmdline addition: ${bootargs_ab};" \
> +	"setenv bootargs ${bootargs} ${bootargs_ab};"
> +
> +#define AB_BOOTARGS " androidboot.force_normal_boot=1"
> +#define RECOVERY_PARTITION "boot"
> +#else
> +#define AB_SELECT_SLOT ""
> +#define AB_SELECT_ARGS " "
> +#define ANDROIDBOOT_GET_CURRENT_SLOT_CMD ""
> +#define AB_BOOTARGS " "
> +#define RECOVERY_PARTITION "recovery"
> +#endif
> +
>  #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
>  	"bootcmd_fastboot=" \
>  		"setenv run_fastboot 0;" \
> @@ -112,9 +145,11 @@
>  			"echo Running Recovery...;" \
>  			"mmc dev ${mmcdev};" \
>  			"setenv bootargs \"${bootargs} androidboot.serialno=${serial#}\";" \
> +			AB_SELECT_SLOT \
> +			AB_SELECT_ARGS \
>  			AVB_VERIFY_CHECK \
> -			"part start mmc ${mmcdev} " RECOVERY_PARTITION " boot_start;" \
> -			"part size mmc ${mmcdev} " RECOVERY_PARTITION " boot_size;" \
> +			"part start mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_start;" \
> +			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
>  			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
>  				"echo Running Android Recovery...;" \
>  				"bootm ${loadaddr};" \
> @@ -131,10 +166,13 @@
>  		"echo Loading Android " BOOT_PARTITION " partition...;" \
>  		"mmc dev ${mmcdev};" \
>  		"setenv bootargs ${bootargs} androidboot.serialno=${serial#};" \
> +		AB_SELECT_SLOT \
> +		AB_SELECT_ARGS \
>  		AVB_VERIFY_CHECK \
> -		"part start mmc ${mmcdev} " BOOT_PARTITION " boot_start;" \
> -		"part size mmc ${mmcdev} " BOOT_PARTITION " boot_size;" \
> +		"part start mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_start;" \
> +		"part size mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_size;" \
>  		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
> +			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
>  			"echo Running Android...;" \
>  			"bootm ${loadaddr};" \
>  		"fi;" \
> @@ -163,6 +201,7 @@
>  #define CONFIG_EXTRA_ENV_SETTINGS                                     \
>  	"partitions=" PARTS_DEFAULT "\0"                              \
>  	"mmcdev=2\0"                                                  \
> +	ANDROIDBOOT_GET_CURRENT_SLOT_CMD                              \
>  	AVB_VERIFY_CMD                                                \
>  	"force_avb=0\0"                                               \
>  	"gpio_recovery=88\0"                                          \
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro
  2021-08-05 15:17 ` [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> BOOT_CMD might be different based on CONFIG_CMD_ABOOTIMG.
> 
> To prepare for abootimg support, extract the boot command
> to a dedicated macro.
> 
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64_android.h | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
> index 83fa25bfb1..0ce616c17e 100644
> --- a/include/configs/meson64_android.h
> +++ b/include/configs/meson64_android.h
> @@ -81,6 +81,8 @@
>  #define RECOVERY_PARTITION "recovery"
>  #endif
>  
> +#define BOOT_CMD "bootm ${loadaddr};"
> +
>  #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
>  	"bootcmd_fastboot=" \
>  		"setenv run_fastboot 0;" \
> @@ -152,7 +154,7 @@
>  			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
>  			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
>  				"echo Running Android Recovery...;" \
> -				"bootm ${loadaddr};" \
> +				BOOT_CMD \
>  			"fi;" \
>  			"echo Failed to boot Android...;" \
>  			"reset;" \
> @@ -174,7 +176,7 @@
>  		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
>  			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
>  			"echo Running Android...;" \
> -			"bootm ${loadaddr};" \
> +			BOOT_CMD \
>  		"fi;" \
>  		"echo Failed to boot Android...;" \
>  		"reset\0"
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 6/9] configs: meson64_android: boot android via abootimg
  2021-08-05 15:17 ` [PATCH 6/9] configs: meson64_android: boot android via abootimg Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> From: Guillaume La Roque <glaroque@baylibre.com>
> 
> Since Android 10, we are required to use a "dtbo" partition which
> includes the various device-tree overlays [1].
> It's also possible to provide a "dtb" partition.
> 
> This is supported via the "abootimg" command.
> 
> On Yukawa, the assumption is that we have only a "dtbo" partition, which
> includes all board dtbs and their dtbos [2]
> 
> [1] https://source.android.com/devices/architecture/dto/partitions
> [2] https://android.googlesource.com/device/amlogic/yukawa/+/refs/heads/master/build/tasks/dtimages.mk#16
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/meson64_android.h | 57 ++++++++++++++++++++++++++++++-
>  1 file changed, 56 insertions(+), 1 deletion(-)
> 
> diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h
> index 0ce616c17e..358e0a5c71 100644
> --- a/include/configs/meson64_android.h
> +++ b/include/configs/meson64_android.h
> @@ -81,7 +81,59 @@
>  #define RECOVERY_PARTITION "recovery"
>  #endif
>  
> +#if defined(CONFIG_CMD_ABOOTIMG)
> +/*
> + * Prepares complete device tree blob for current board (for Android boot).
> + *
> + * Boot image or recovery image should be loaded into $loadaddr prior to running
> + * these commands. The logic of these commnads is next:
> + *
> + *   1. Read correct DTB for current SoC/board from boot image in $loadaddr
> + *      to $fdtaddr
> + *   2. Merge all needed DTBO for current board from 'dtbo' partition into read
> + *      DTB
> + *   3. User should provide $fdtaddr as 3rd argument to 'bootm'
> + */
> +#define PREPARE_FDT \
> +	"echo Preparing FDT...; " \
> +	"if test $board_name = sei510; then " \
> +		"echo \"  Reading DTB for sei510...\"; " \
> +		"setenv dtb_index 0;" \
> +	"elif test $board_name = sei610; then " \
> +		"echo \"  Reading DTB for sei610...\"; " \
> +		"setenv dtb_index 1;" \
> +	"else " \
> +		"echo Error: Android boot is not supported for $board_name; " \
> +		"exit; " \
> +	"fi; " \
> +	"abootimg get dtb --index=$dtb_index dtb_start dtb_size; " \
> +	"cp.b $dtb_start $fdt_addr_r $dtb_size; " \
> +	"fdt addr $fdt_addr_r  0x80000; " \
> +	"if test $board_name = sei510; then " \
> +		"echo \"  Reading DTBO for sei510...\"; " \
> +		"setenv dtbo_index 0;" \
> +	"elif test $board_name = sei610; then " \
> +		"echo \"  Reading DTBO for sei610...\"; " \
> +		"setenv dtbo_index 1;" \
> +	"else " \
> +		"echo Error: Android boot is not supported for $board_name; " \
> +		"exit; " \
> +	"fi; " \
> +	"part start mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_start; " \
> +	"part size mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_size; " \
> +	"mmc read ${dtboaddr} ${p_dtbo_start} ${p_dtbo_size}; " \
> +	"echo \"  Applying DTBOs...\"; " \
> +	"adtimg addr $dtboaddr; " \
> +	"adtimg get dt --index=$dtbo_index dtbo0_addr; " \
> +	"fdt apply $dtbo0_addr;" \
> +	"setenv bootargs \"$bootargs androidboot.dtbo_idx=$dtbo_index \";"\
> +
> +#define BOOT_CMD "bootm ${loadaddr} ${loadaddr} ${fdt_addr_r};"
> +
> +#else
> +#define PREPARE_FDT " "
>  #define BOOT_CMD "bootm ${loadaddr};"
> +#endif
>  
>  #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
>  	"bootcmd_fastboot=" \
> @@ -153,6 +205,7 @@
>  			"part start mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_start;" \
>  			"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
>  			"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
> +				PREPARE_FDT \
>  				"echo Running Android Recovery...;" \
>  				BOOT_CMD \
>  			"fi;" \
> @@ -174,6 +227,7 @@
>  		"part start mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_start;" \
>  		"part size mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_size;" \
>  		"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
> +			PREPARE_FDT \
>  			"setenv bootargs \"${bootargs} " AB_BOOTARGS "\"  ; " \
>  			"echo Running Android...;" \
>  			BOOT_CMD \
> @@ -212,7 +266,8 @@
>  	"stdin=" STDIN_CFG "\0"                                       \
>  	"stdout=" STDOUT_CFG "\0"                                     \
>  	"stderr=" STDOUT_CFG "\0"                                     \
> -	"loadaddr=0x01000000\0"                                       \
> +	"dtboaddr=0x08200000\0"                                       \
> +	"loadaddr=0x01080000\0"                                       \
>  	"fdt_addr_r=0x01000000\0"                                     \
>  	"scriptaddr=0x08000000\0"                                     \
>  	"kernel_addr_r=0x01080000\0"                                  \
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default
  2021-08-05 15:17 ` [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> There is a mix of spaces and tabs at the leading \. This makes updating
> theses lines harder.
> 
> Add a single space before each \ for some consistency.
> 
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/sei510.h | 14 +++++++-------
>  include/configs/sei610.h | 14 +++++++-------
>  2 files changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/include/configs/sei510.h b/include/configs/sei510.h
> index d37b4c6405..16a34c717d 100644
> --- a/include/configs/sei510.h
> +++ b/include/configs/sei510.h
> @@ -16,14 +16,14 @@
>  #define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
>  #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
>  
> -#define PARTS_DEFAULT                                        \
> -	"uuid_disk=${uuid_gpt_disk};"  			\
> +#define PARTS_DEFAULT \
> +	"uuid_disk=${uuid_gpt_disk};" \
>  	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
> -	"name=logo,size=2M,uuid=" LOGO_UUID             \
> -	"name=cache,size=256M,uuid=" CACHE_UUID             \
> -	"name=system,size=1536M,uuid=" SYSTEM_UUID           \
> -	"name=vendor,size=256M,uuid=" VENDOR_UUID            \
> -	"name=userdata,size=5341M,uuid=" USERDATA_UUID	\
> +	"name=logo,size=2M,uuid=" LOGO_UUID \
> +	"name=cache,size=256M,uuid=" CACHE_UUID \
> +	"name=system,size=1536M,uuid=" SYSTEM_UUID \
> +	"name=vendor,size=256M,uuid=" VENDOR_UUID \
> +	"name=userdata,size=5341M,uuid=" USERDATA_UUID \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  
> diff --git a/include/configs/sei610.h b/include/configs/sei610.h
> index 9eeffdd72c..6d13fd143b 100644
> --- a/include/configs/sei610.h
> +++ b/include/configs/sei610.h
> @@ -16,14 +16,14 @@
>  #define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
>  #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
>  
> -#define PARTS_DEFAULT                                        \
> -	"uuid_disk=${uuid_gpt_disk};"  			\
> +#define PARTS_DEFAULT \
> +	"uuid_disk=${uuid_gpt_disk};" \
>  	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
> -	"name=logo,size=2M,uuid=" LOGO_UUID             \
> -	"name=cache,size=256M,uuid=" CACHE_UUID             \
> -	"name=system,size=1536M,uuid=" SYSTEM_UUID           \
> -	"name=vendor,size=256M,uuid=" VENDOR_UUID            \
> -	"name=userdata,size=12795M,uuid=" USERDATA_UUID	\
> +	"name=logo,size=2M,uuid=" LOGO_UUID \
> +	"name=cache,size=256M,uuid=" CACHE_UUID \
> +	"name=system,size=1536M,uuid=" SYSTEM_UUID \
> +	"name=vendor,size=256M,uuid=" VENDOR_UUID \
> +	"name=userdata,size=12795M,uuid=" USERDATA_UUID \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  #include <configs/meson64_android.h>
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids
  2021-08-05 15:17 ` [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> doc/README.gpt states:
> 
>> The fields 'uuid' and 'uuid_disk' are optional if CONFIG_RANDOM_UUID is
>> enabled. A random uuid will be used if omitted or they point to an empty/
>> non-existent environment variable. The environment variable will be
>> set to the generated UUID.  The 'gpt guid' command reads the current
>> value of the uuid_disk from the GPT.
> 
> Since we have CONFIG_RANDOM_UUID=y, remove the hard-coded uuids
> and use meaningful variable names instead.
> 
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  include/configs/sei510.h | 12 ++++--------
>  include/configs/sei610.h | 12 ++++--------
>  2 files changed, 8 insertions(+), 16 deletions(-)
> 
> diff --git a/include/configs/sei510.h b/include/configs/sei510.h
> index 16a34c717d..5bf2668803 100644
> --- a/include/configs/sei510.h
> +++ b/include/configs/sei510.h
> @@ -10,20 +10,16 @@
>  #define __CONFIG_H
>  
>  #define LOGO_UUID "43a3305d-150f-4cc9-bd3b-38fca8693846;"
> -#define CACHE_UUID "99207ae6-5207-11e9-999e-6f77a3612069;"
> -#define SYSTEM_UUID "99f9b7ac-5207-11e9-8507-c3c037e393f3;"
> -#define VENDOR_UUID "9d082802-5207-11e9-954c-cbbce08ba108;"
> -#define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
>  #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
>  
>  #define PARTS_DEFAULT \
>  	"uuid_disk=${uuid_gpt_disk};" \
>  	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
>  	"name=logo,size=2M,uuid=" LOGO_UUID \
> -	"name=cache,size=256M,uuid=" CACHE_UUID \
> -	"name=system,size=1536M,uuid=" SYSTEM_UUID \
> -	"name=vendor,size=256M,uuid=" VENDOR_UUID \
> -	"name=userdata,size=5341M,uuid=" USERDATA_UUID \
> +	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
> +	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
> +	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
> +	"name=userdata,size=5341M,uuid={uuid_gpt_userdata};" \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  
> diff --git a/include/configs/sei610.h b/include/configs/sei610.h
> index 6d13fd143b..baace75a02 100644
> --- a/include/configs/sei610.h
> +++ b/include/configs/sei610.h
> @@ -10,20 +10,16 @@
>  #define __CONFIG_H
>  
>  #define LOGO_UUID "43a3305d-150f-4cc9-bd3b-38fca8693846;"
> -#define CACHE_UUID "99207ae6-5207-11e9-999e-6f77a3612069;"
> -#define SYSTEM_UUID "99f9b7ac-5207-11e9-8507-c3c037e393f3;"
> -#define VENDOR_UUID "9d082802-5207-11e9-954c-cbbce08ba108;"
> -#define USERDATA_UUID "9b976e42-5207-11e9-8f16-ff47ac594b22;"
>  #define ROOT_UUID "ddb8c3f6-d94d-4394-b633-3134139cc2e0;"
>  
>  #define PARTS_DEFAULT \
>  	"uuid_disk=${uuid_gpt_disk};" \
>  	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
>  	"name=logo,size=2M,uuid=" LOGO_UUID \
> -	"name=cache,size=256M,uuid=" CACHE_UUID \
> -	"name=system,size=1536M,uuid=" SYSTEM_UUID \
> -	"name=vendor,size=256M,uuid=" VENDOR_UUID \
> -	"name=userdata,size=12795M,uuid=" USERDATA_UUID \
> +	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
> +	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
> +	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
> +	"name=userdata,size=12795M,uuid=${uuid_gpt_userdata};" \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  #include <configs/meson64_android.h>
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 9/9] configs: sei510/610: android bootflow via abootimg
  2021-08-05 15:17 ` [PATCH 9/9] configs: sei510/610: android bootflow via abootimg Mattijs Korpershoek
@ 2021-08-05 16:21   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-05 16:21 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> From: Guillaume La Roque <glaroque@baylibre.com>
> 
> Activate the following Kconfig options:
> * AVB       for Android Verified Boot support
> * ADTIMG    for merging DTBOs
> * ABOOTIMG  for extracting Android boot image
> 
> Also rework the partitioning tables:
> - add a misc partition to handle BCB messages
> - add a dtbo partition to store various DTBOs
> - add a vbmeta partition for AVB hashes
> - Merge vendor and system into the "super" partition
> 
> Note: avb support is disables by default. To activate it:
>  => setenv force_avb 1;
>  => saveenv;
> 
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  configs/sei510_defconfig |  5 +++++
>  configs/sei610_defconfig |  5 +++++
>  include/configs/sei510.h | 11 +++++++----
>  include/configs/sei610.h | 13 ++++++++-----
>  4 files changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/configs/sei510_defconfig b/configs/sei510_defconfig
> index 74328f2fd4..8099b40b55 100644
> --- a/configs/sei510_defconfig
> +++ b/configs/sei510_defconfig
> @@ -20,7 +20,10 @@ CONFIG_PREBOOT="run load_logo"
>  # CONFIG_CONSOLE_MUX is not set
>  # CONFIG_DISPLAY_CPUINFO is not set
>  CONFIG_MISC_INIT_R=y
> +CONFIG_AVB_VERIFY=y
>  # CONFIG_CMD_BDI is not set
> +CONFIG_CMD_ADTIMG=y
> +CONFIG_CMD_ABOOTIMG=y
>  # CONFIG_CMD_IMI is not set
>  CONFIG_CMD_BCB=y
>  CONFIG_CMD_GPIO=y
> @@ -32,6 +35,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
>  # CONFIG_CMD_SETEXPR is not set
>  CONFIG_CMD_BMP=y
>  CONFIG_CMD_REGULATOR=y
> +CONFIG_CMD_AVB=y
>  CONFIG_OF_CONTROL=y
>  CONFIG_ENV_IS_IN_MMC=y
>  CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> @@ -84,4 +88,5 @@ CONFIG_VIDEO_BMP_RLE8=y
>  CONFIG_BMP_16BPP=y
>  CONFIG_BMP_24BPP=y
>  CONFIG_BMP_32BPP=y
> +CONFIG_LIBAVB=y
>  CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/configs/sei610_defconfig b/configs/sei610_defconfig
> index 2a6d0e5995..e11f36ac79 100644
> --- a/configs/sei610_defconfig
> +++ b/configs/sei610_defconfig
> @@ -20,7 +20,10 @@ CONFIG_PREBOOT="run load_logo"
>  # CONFIG_CONSOLE_MUX is not set
>  # CONFIG_DISPLAY_CPUINFO is not set
>  CONFIG_MISC_INIT_R=y
> +CONFIG_AVB_VERIFY=y
>  # CONFIG_CMD_BDI is not set
> +CONFIG_CMD_ADTIMG=y
> +CONFIG_CMD_ABOOTIMG=y
>  # CONFIG_CMD_IMI is not set
>  CONFIG_CMD_BCB=y
>  CONFIG_CMD_GPIO=y
> @@ -32,6 +35,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
>  # CONFIG_CMD_SETEXPR is not set
>  CONFIG_CMD_BMP=y
>  CONFIG_CMD_REGULATOR=y
> +CONFIG_CMD_AVB=y
>  CONFIG_OF_CONTROL=y
>  CONFIG_ENV_IS_IN_MMC=y
>  CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> @@ -84,4 +88,5 @@ CONFIG_VIDEO_BMP_RLE8=y
>  CONFIG_BMP_16BPP=y
>  CONFIG_BMP_24BPP=y
>  CONFIG_BMP_32BPP=y
> +CONFIG_LIBAVB=y
>  CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/include/configs/sei510.h b/include/configs/sei510.h
> index 5bf2668803..ea91a06157 100644
> --- a/include/configs/sei510.h
> +++ b/include/configs/sei510.h
> @@ -14,12 +14,15 @@
>  
>  #define PARTS_DEFAULT \
>  	"uuid_disk=${uuid_gpt_disk};" \
> -	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
>  	"name=logo,size=2M,uuid=" LOGO_UUID \
> +	"name=misc,size=128K,uuid=${uuid_gpt_misc};" \
> +	"name=dtbo,size=8M,uuid=${uuid_gpt_dtbo};" \
> +	"name=vbmeta,size=64K,uuid=${uuid_gpt_vbmeta};" \
> +	"name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \
> +	"name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \
>  	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
> -	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
> -	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
> -	"name=userdata,size=5341M,uuid={uuid_gpt_userdata};" \
> +	"name=super,size=2304M,uuid=${uuid_gpt_super};" \
> +	"name=userdata,size=4820M,uuid=${uuid_gpt_userdata};" \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  
> diff --git a/include/configs/sei610.h b/include/configs/sei610.h
> index baace75a02..783eece271 100644
> --- a/include/configs/sei610.h
> +++ b/include/configs/sei610.h
> @@ -14,12 +14,15 @@
>  
>  #define PARTS_DEFAULT \
>  	"uuid_disk=${uuid_gpt_disk};" \
> -	"name=boot,size=64M,bootable,uuid=${uuid_gpt_boot};" \
> -	"name=logo,size=2M,uuid=" LOGO_UUID \
> +	"name=logo,start=512K,size=2M,uuid=" LOGO_UUID \
> +	"name=misc,size=512K,uuid=${uuid_gpt_misc};" \
> +	"name=dtbo,size=8M,uuid=${uuid_gpt_dtbo};" \
> +	"name=vbmeta,size=512K,uuid=${uuid_gpt_vbmeta};" \
> +	"name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \
> +	"name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \
>  	"name=cache,size=256M,uuid=${uuid_gpt_cache};" \
> -	"name=system,size=1536M,uuid=${uuid_gpt_system};" \
> -	"name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
> -	"name=userdata,size=12795M,uuid=${uuid_gpt_userdata};" \
> +	"name=super,size=2304M,uuid=${uuid_gpt_super};" \
> +	"name=userdata,size=12274M,uuid=${uuid_gpt_userdata};" \
>  	"name=rootfs,size=-,uuid=" ROOT_UUID
>  
>  #include <configs/meson64_android.h>
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN
       [not found]     ` <20210805171601.GN858@bill-the-cat>
@ 2021-08-06  7:54       ` Neil Armstrong
  2021-08-06  9:24         ` Mattijs Korpershoek
  0 siblings, 1 reply; 25+ messages in thread
From: Neil Armstrong @ 2021-08-06  7:54 UTC (permalink / raw)
  To: Tom Rini; +Cc: Mattijs Korpershoek, u-boot-amlogic, u-boot, Guillaume La Roque

On 05/08/2021 19:16, Tom Rini wrote:
> On Thu, Aug 05, 2021 at 06:20:53PM +0200, Neil Armstrong wrote:
>> On 05/08/2021 17:17, Mattijs Korpershoek wrote:
>>> Permit redefining SYS_MALLOC_LEN for board specific configs.
>>> This is especially useful for Android with AVB, which requires a malloc
>>> length of 128M.
>>>
>>> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
>>> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
>>> ---
>>>  include/configs/meson64.h | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/include/configs/meson64.h b/include/configs/meson64.h
>>> index fb7f16d148..f9bb0240d2 100644
>>> --- a/include/configs/meson64.h
>>> +++ b/include/configs/meson64.h
>>> @@ -32,7 +32,9 @@
>>>  #define CONFIG_CPU_ARMV8
>>>  #define CONFIG_REMAKE_ELF
>>>  #define CONFIG_SYS_MAXARGS		32
>>> +#ifndef CONFIG_SYS_MALLOC_LEN
>>>  #define CONFIG_SYS_MALLOC_LEN		(32 << 20)
>>> +#endif
>>>  #define CONFIG_SYS_CBSIZE		1024
>>>  
>>>  #define CONFIG_SYS_SDRAM_BASE		0
>>>
>>
>> Acked-by: Neil Armstrong <narmstrong@baylibre.com>
> 
> I prefer to see these as SZ_xxx, but also what's the minimum DRAM you're
> going to see on a meson64 platform?  And if it's 1GB or more, why not
> just use 128MB for everyone?
> 

We can get down to 256MiB DRAM (very rare), but 512MiB is used on La Frite.

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 0/9] meson64_android: Android boot flow using abootimg
       [not found] ` <20210805172332.GO858@bill-the-cat>
@ 2021-08-06  7:57   ` Neil Armstrong
  2021-08-06 15:36     ` Mattijs Korpershoek
  0 siblings, 1 reply; 25+ messages in thread
From: Neil Armstrong @ 2021-08-06  7:57 UTC (permalink / raw)
  To: Tom Rini, Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

On 05/08/2021 19:23, Tom Rini wrote:
> On Thu, Aug 05, 2021 at 05:17:19PM +0200, Mattijs Korpershoek wrote:
> 
>> The SEI-610 and SEI-510 boards are well supported in the
>> Android Open Source project via the yukawa [1] platform.
>>
>> Their U-Boot version, despite being public [2] is not in mainline.
>>
>> Android 10 and higher have significantly reworked the bootloader
>> requirements:
>>
>> * bootloader should pass slot information in case of A/B
>> * bootloader should perform AVB verification in case it's supported
>> * bootloader should read and apply dtb overlays from a dtbo partition
>>
>> These series add support for all the above.
>>
>> [1] https://android.googlesource.com/device/amlogic/yukawa
>> [2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ
> 
> My high level concern with this series is that it takes what I assume is
> the Android-only boot path, and adds further abstractions to it, it
> looks like.  Can we just say "Here is the Android 10 boot path" (since
> AVB has been around for a while) and here is the generic distro boot
> path for non-Android?  Reading this over it looks like it becomes "Here
> is the Android + AVB boot path", "Here is the Androidd non-AVB boot
> path" and then I assume "Here is the generic distro boot path".
> 
> I'd also like to know if in general we can make some generic environment
> macros for "Here is Android AVB boot path", so that we don't need to
> duplicate this between SoCs.  At the very high level, something like the
> generic distro boot framework, but that does Android instead.
> 

We've been thinking about that, but the Android boot flow doesn't really leave place
for other methods.

In our implementation we decided to use the distro_bootcmd helper to setup the different
Android boot flow steps, it permits to have a much simpler cmd definition than the other
implementation, but makes mixing with the default boot steps more complex (or maybe there
is something we can use to enable/disable easily some distro BOOT_TARGET_DEVICES ?)

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN
  2021-08-06  7:54       ` Neil Armstrong
@ 2021-08-06  9:24         ` Mattijs Korpershoek
  0 siblings, 0 replies; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-06  9:24 UTC (permalink / raw)
  To: Neil Armstrong, Tom Rini; +Cc: u-boot-amlogic, u-boot, Guillaume La Roque

Hi Tom, Neil,

Neil Armstrong <narmstrong@baylibre.com> writes:

> On 05/08/2021 19:16, Tom Rini wrote:
>> On Thu, Aug 05, 2021 at 06:20:53PM +0200, Neil Armstrong wrote:
>>> On 05/08/2021 17:17, Mattijs Korpershoek wrote:
>>>> Permit redefining SYS_MALLOC_LEN for board specific configs.
>>>> This is especially useful for Android with AVB, which requires a malloc
>>>> length of 128M.
>>>>
>>>> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
>>>> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
>>>> ---
>>>>  include/configs/meson64.h | 2 ++
>>>>  1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/include/configs/meson64.h b/include/configs/meson64.h
>>>> index fb7f16d148..f9bb0240d2 100644
>>>> --- a/include/configs/meson64.h
>>>> +++ b/include/configs/meson64.h
>>>> @@ -32,7 +32,9 @@
>>>>  #define CONFIG_CPU_ARMV8
>>>>  #define CONFIG_REMAKE_ELF
>>>>  #define CONFIG_SYS_MAXARGS		32
>>>> +#ifndef CONFIG_SYS_MALLOC_LEN
>>>>  #define CONFIG_SYS_MALLOC_LEN		(32 << 20)
>>>> +#endif
>>>>  #define CONFIG_SYS_CBSIZE		1024
>>>>  
>>>>  #define CONFIG_SYS_SDRAM_BASE		0
>>>>
>>>
>>> Acked-by: Neil Armstrong <narmstrong@baylibre.com>
>> 
>> I prefer to see these as SZ_xxx, but also what's the minimum DRAM you're
>> going to see on a meson64 platform?  And if it's 1GB or more, why not
>> just use 128MB for everyone?
>> 
>
> We can get down to 256MiB DRAM (very rare), but 512MiB is used on La Frite.
In that case, I think it's more reasonable to keep the change as-is.
I'll send a v2 replacing (32 << 20) by SZ_32M

Do you agree ?

Mattijs

>
> Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 0/9] meson64_android: Android boot flow using abootimg
  2021-08-06  7:57   ` [PATCH 0/9] meson64_android: Android boot flow using abootimg Neil Armstrong
@ 2021-08-06 15:36     ` Mattijs Korpershoek
       [not found]       ` <20210806155629.GZ858@bill-the-cat>
  0 siblings, 1 reply; 25+ messages in thread
From: Mattijs Korpershoek @ 2021-08-06 15:36 UTC (permalink / raw)
  To: Neil Armstrong, Tom Rini; +Cc: u-boot-amlogic, u-boot

Hi Neil, Tom,

Neil Armstrong <narmstrong@baylibre.com> writes:

> On 05/08/2021 19:23, Tom Rini wrote:
>> On Thu, Aug 05, 2021 at 05:17:19PM +0200, Mattijs Korpershoek wrote:
>> 
>>> The SEI-610 and SEI-510 boards are well supported in the
>>> Android Open Source project via the yukawa [1] platform.
>>>
>>> Their U-Boot version, despite being public [2] is not in mainline.
>>>
>>> Android 10 and higher have significantly reworked the bootloader
>>> requirements:
>>>
>>> * bootloader should pass slot information in case of A/B
>>> * bootloader should perform AVB verification in case it's supported
>>> * bootloader should read and apply dtb overlays from a dtbo partition
>>>
>>> These series add support for all the above.
>>>
>>> [1] https://android.googlesource.com/device/amlogic/yukawa
>>> [2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ
>> 
>> My high level concern with this series is that it takes what I assume is
>> the Android-only boot path, and adds further abstractions to it, it
>> looks like.  Can we just say "Here is the Android 10 boot path" (since
>> AVB has been around for a while) and here is the generic distro boot
>> path for non-Android?  Reading this over it looks like it becomes "Here
>> is the Android + AVB boot path", "Here is the Androidd non-AVB boot
>> path" and then I assume "Here is the generic distro boot path".
Not exactly. Android supports multiple combinations:
- non-AVB + no-A/B  (legacy, no security). This is usually used for
development builds
- AVB + no-A/B
- AVB + A/B
Here, we should be supporting all of the above using compile flags.
>> 
>> I'd also like to know if in general we can make some generic environment
>> macros for "Here is Android AVB boot path", so that we don't need to
>> duplicate this between SoCs.  At the very high level, something like the
>> generic distro boot framework, but that does Android instead.
I agree. It would be really nice if we could have a generic "boot android" framework

TI has a ti_omap5_common.h which seems to support similar things.
However, it does not support the "no-A/B" mode.
In that file, we can also see board specific logic: namely the mapping
between the $board_name and the dtbo index passed to "abootimg".

Google has another approach via the boot_android[1] command.

We will keep looking into this.

For now, we have mostly worked on cleaning up/syncing the downstream [1]
yukawa tree in order to enable AOSP users to rebuild their U-Boot from mainline.

[1] http://patchwork.ozlabs.org/project/uboot/patch/20170402084952.5102-7-deymo@google.com/
[2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ
>> 
>
> We've been thinking about that, but the Android boot flow doesn't really leave place
> for other methods.
>
> In our implementation we decided to use the distro_bootcmd helper to setup the different
> Android boot flow steps, it permits to have a much simpler cmd definition than the other
> implementation, but makes mixing with the default boot steps more complex (or maybe there
> is something we can use to enable/disable easily some distro BOOT_TARGET_DEVICES ?)
>
> Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 0/9] meson64_android: Android boot flow using abootimg
       [not found]       ` <20210806155629.GZ858@bill-the-cat>
@ 2021-08-10  8:41         ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-10  8:41 UTC (permalink / raw)
  To: Tom Rini, Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

Hi,

On 06/08/2021 17:56, Tom Rini wrote:
> On Fri, Aug 06, 2021 at 05:36:41PM +0200, Mattijs Korpershoek wrote:
>> Hi Neil, Tom,
>>
>> Neil Armstrong <narmstrong@baylibre.com> writes:
>>
>>> On 05/08/2021 19:23, Tom Rini wrote:
>>>> On Thu, Aug 05, 2021 at 05:17:19PM +0200, Mattijs Korpershoek wrote:
>>>>
>>>>> The SEI-610 and SEI-510 boards are well supported in the
>>>>> Android Open Source project via the yukawa [1] platform.
>>>>>
>>>>> Their U-Boot version, despite being public [2] is not in mainline.
>>>>>
>>>>> Android 10 and higher have significantly reworked the bootloader
>>>>> requirements:
>>>>>
>>>>> * bootloader should pass slot information in case of A/B
>>>>> * bootloader should perform AVB verification in case it's supported
>>>>> * bootloader should read and apply dtb overlays from a dtbo partition
>>>>>
>>>>> These series add support for all the above.
>>>>>
>>>>> [1] https://android.googlesource.com/device/amlogic/yukawa
>>>>> [2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ
>>>>
>>>> My high level concern with this series is that it takes what I assume is
>>>> the Android-only boot path, and adds further abstractions to it, it
>>>> looks like.  Can we just say "Here is the Android 10 boot path" (since
>>>> AVB has been around for a while) and here is the generic distro boot
>>>> path for non-Android?  Reading this over it looks like it becomes "Here
>>>> is the Android + AVB boot path", "Here is the Androidd non-AVB boot
>>>> path" and then I assume "Here is the generic distro boot path".
>> Not exactly. Android supports multiple combinations:
>> - non-AVB + no-A/B  (legacy, no security). This is usually used for
>> development builds
>> - AVB + no-A/B
>> - AVB + A/B
>> Here, we should be supporting all of the above using compile flags.
>>>>
>>>> I'd also like to know if in general we can make some generic environment
>>>> macros for "Here is Android AVB boot path", so that we don't need to
>>>> duplicate this between SoCs.  At the very high level, something like the
>>>> generic distro boot framework, but that does Android instead.
>> I agree. It would be really nice if we could have a generic "boot android" framework
>>
>> TI has a ti_omap5_common.h which seems to support similar things.
>> However, it does not support the "no-A/B" mode.
>> In that file, we can also see board specific logic: namely the mapping
>> between the $board_name and the dtbo index passed to "abootimg".
>>
>> Google has another approach via the boot_android[1] command.
> 
> I guess I'm a little disappointed that there was no follow up to the
> question about boot_android.  I would like to see the Android support
> made easier to work with.
> 

We share the same disappointment, the Android boot flow is incredibly hard
to implement and test. And completely changes in incompatible ways between
new releases.

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 0/9] meson64_android: Android boot flow using abootimg
  2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
                   ` (9 preceding siblings ...)
       [not found] ` <20210805172332.GO858@bill-the-cat>
@ 2021-08-10  8:47 ` Neil Armstrong
  10 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2021-08-10  8:47 UTC (permalink / raw)
  To: Mattijs Korpershoek; +Cc: u-boot-amlogic, u-boot

On 05/08/2021 17:17, Mattijs Korpershoek wrote:
> The SEI-610 and SEI-510 boards are well supported in the
> Android Open Source project via the yukawa [1] platform.
> 
> Their U-Boot version, despite being public [2] is not in mainline.
> 
> Android 10 and higher have significantly reworked the bootloader
> requirements:
> 
> * bootloader should pass slot information in case of A/B
> * bootloader should perform AVB verification in case it's supported
> * bootloader should read and apply dtb overlays from a dtbo partition
> 
> These series add support for all the above.
> 
> [1] https://android.googlesource.com/device/amlogic/yukawa
> [2] https://gitlab.com/baylibre/amlogic/atv/u-boot/-/tree/u-boot/v2021.07/integ
> 
> Guillaume La Roque (2):
>   configs: meson64_android: boot android via abootimg
>   configs: sei510/610: android bootflow via abootimg
> 
> Mattijs Korpershoek (7):
>   configs: meson64: permit redefining SYS_MALLOC_LEN
>   configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB
>   configs: meson64_android: implement AVB support
>   configs: meson64_android: implement A/B slot support
>   configs: meson64_android: define BOOT_CMD macro
>   configs: sei510/sei610: reformat PARTS_default
>   configs: sei510/sei610: don't use hard-coded gpt uuids
> 
>  configs/sei510_defconfig          |   5 ++
>  configs/sei610_defconfig          |   5 ++
>  include/configs/meson64.h         |   2 +
>  include/configs/meson64_android.h | 139 ++++++++++++++++++++++++++++--
>  include/configs/sei510.h          |  23 +++--
>  include/configs/sei610.h          |  23 +++--
>  6 files changed, 165 insertions(+), 32 deletions(-)
> 

Applied to u-boot-amlogic

Thanks,
Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2021-08-10  8:47 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-05 15:17 [PATCH 0/9] meson64_android: Android boot flow using abootimg Mattijs Korpershoek
2021-08-05 15:17 ` [PATCH 1/9] configs: meson64: permit redefining SYS_MALLOC_LEN Mattijs Korpershoek
2021-08-05 16:20   ` Neil Armstrong
     [not found]     ` <20210805171601.GN858@bill-the-cat>
2021-08-06  7:54       ` Neil Armstrong
2021-08-06  9:24         ` Mattijs Korpershoek
2021-08-05 15:17 ` [PATCH 2/9] configs: meson64_android: increase SYS_MALLOC_LEN to 128M for AVB Mattijs Korpershoek
2021-08-05 16:20   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 3/9] configs: meson64_android: implement AVB support Mattijs Korpershoek
2021-08-05 16:20   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 4/9] configs: meson64_android: implement A/B slot support Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 5/9] configs: meson64_android: define BOOT_CMD macro Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 6/9] configs: meson64_android: boot android via abootimg Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 7/9] configs: sei510/sei610: reformat PARTS_default Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 8/9] configs: sei510/sei610: don't use hard-coded gpt uuids Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
2021-08-05 15:17 ` [PATCH 9/9] configs: sei510/610: android bootflow via abootimg Mattijs Korpershoek
2021-08-05 16:21   ` Neil Armstrong
     [not found] ` <20210805172332.GO858@bill-the-cat>
2021-08-06  7:57   ` [PATCH 0/9] meson64_android: Android boot flow using abootimg Neil Armstrong
2021-08-06 15:36     ` Mattijs Korpershoek
     [not found]       ` <20210806155629.GZ858@bill-the-cat>
2021-08-10  8:41         ` Neil Armstrong
2021-08-10  8:47 ` Neil Armstrong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox