Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-20 Thread Tom Rini
On Thu, Jun 13, 2024 at 12:13:07PM +0200, Mattijs Korpershoek wrote:

> Android boot flow is a bit different than a regular Linux distro.
> Android relies on multiple partitions in order to boot.
> 
> A typical boot flow would be:
> 1. Parse the Bootloader Control Block (BCB, misc partition)
> 2. If BCB requested bootonce-bootloader, start fastboot and wait.
> 3. If BCB requested recovery or normal android, run the following:
>a. Get slot (A/B) from BCB
>b. Run AVB (Android Verified Boot) on boot partitions
>c. Load boot and vendor_boot partitions
>d. Load device-tree, ramdisk and boot
> 
> The AOSP documentation has more details at [1], [2], [3]
> 
> This has been implemented via complex boot scripts such as [4].
> However, these boot script are neither very maintainable nor generic.
> Moreover, DISTRO_DEFAULTS is being deprecated [5].
> 
> Add a generic Android bootflow implementation for bootstd.
> 
> For this initial version, only boot image v4 is supported.
> 
> This has been tested on sandbox using:
> $ ./test/py/test.py --bd sandbox --build -k test_ut
> 
> This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
> To test on TI board, the following (WIP) patch is needed as well:
> https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04
> 
> [1] https://source.android.com/docs/core/architecture/bootloader
> [2] https://source.android.com/docs/core/architecture/partitions
> [3] https://source.android.com/docs/core/architecture/partitions/generic-boot
> [4] 
> https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
> [5] https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
> [6] 
> https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html

This leads to failures in CI such as:
=== FAILURES ===
___ test_ut_dm_init_bootstd 
test/py/tests/test_ut.py:555: in test_ut_dm_init_bootstd
setup_android_image(u_boot_console)
test/py/tests/test_ut.py:488: in setup_android_image
with open(boot_img, 'rb') as inf:
E   FileNotFoundError: [Errno 2] No such file or directory: 
'/tmp/malta64el/bootv4.img'
- Captured stdout call -

-- 
Tom


signature.asc
Description: PGP signature


Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-19 Thread Mattijs Korpershoek
Hi Simon.

On mar., juin 18, 2024 at 21:03, Simon Glass  wrote:

> Hi Mattijs,
>
> On Mon, 17 Jun 2024 at 09:15, Mattijs Korpershoek
>  wrote:
>>
>> Hi Simon,
>>
>> On lun., juin 17, 2024 at 07:53, Simon Glass  wrote:
>>
>> > Hi Mattijs,
>> >
>> > On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek
>> >  wrote:
>> >>
>> >> Android boot flow is a bit different than a regular Linux distro.
>> >> Android relies on multiple partitions in order to boot.
>> >>
>> >> A typical boot flow would be:
>> >> 1. Parse the Bootloader Control Block (BCB, misc partition)
>> >> 2. If BCB requested bootonce-bootloader, start fastboot and wait.
>> >> 3. If BCB requested recovery or normal android, run the following:
>> >>a. Get slot (A/B) from BCB
>> >>b. Run AVB (Android Verified Boot) on boot partitions
>> >>c. Load boot and vendor_boot partitions
>> >>d. Load device-tree, ramdisk and boot
>> >>
>> >> The AOSP documentation has more details at [1], [2], [3]
>> >>
>> >> This has been implemented via complex boot scripts such as [4].
>> >> However, these boot script are neither very maintainable nor generic.
>> >> Moreover, DISTRO_DEFAULTS is being deprecated [5].
>> >>
>> >> Add a generic Android bootflow implementation for bootstd.
>> >>
>> >> For this initial version, only boot image v4 is supported.
>> >>
>> >> This has been tested on sandbox using:
>> >> $ ./test/py/test.py --bd sandbox --build -k test_ut
>> >>
>> >> This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
>> >> To test on TI board, the following (WIP) patch is needed as well:
>> >> https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04
>> >>
>> >> [1] https://source.android.com/docs/core/architecture/bootloader
>> >> [2] https://source.android.com/docs/core/architecture/partitions
>> >> [3] 
>> >> https://source.android.com/docs/core/architecture/partitions/generic-boot
>> >> [4] 
>> >> https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
>> >> [5] 
>> >> https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
>> >> [6] 
>> >> https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html
>> >>
>> >> Signed-off-by: Mattijs Korpershoek 
>> >> ---
>> >> Changes in v2:
>> >> - Dropped patch 2/6 boot: android: Add image_android_get_version() (Igor)
>> >> - Fixed multi-line comment style (Igor, Simon)
>> >> - Added dependency on CMD_FASTBOOT for BOOTMETH_ANDROID (Igor)
>> >> - Fixed various resource leaks (Igor)
>> >> - Fixed bootmeth_priv dangling pointer on error cases (Igor)
>> >> - Updated test instructions in commit message for patch 6/6
>> >> - Added __weak impl of get_avendor_bootimg_addr() in patch 1 (dropped
>> >>   Igor's review because of this change)
>> >> - Added extra info in Kconfig to detail MMC limitation (Simon)
>> >> - Fixed typo Bootmethod->Bootmeth (Simon)
>> >> - Documented android_priv structure (Simon)
>> >> - Demoted various messages from printf() to log_debug (Simon)
>> >> - Fixed some lines too long (Simon)
>> >> - Added function documentation to read_slotted_partition() (Simon)
>> >> - Added some doc about avb extra_args being modified (Simon)
>> >> - Link to v1: 
>> >> https://lore.kernel.org/r/20240606-bootmeth-android-v1-0-0c69d4457...@baylibre.com
>> >>
>> >> ---
>> >> Mattijs Korpershoek (5):
>> >>   boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
>> >>   bootstd: Add bootflow_iter_check_mmc() helper
>> >>   android: boot: Add set_abootimg_addr() and 
>> >> set_avendor_bootimg_addr()
>> >>   bootstd: Add a bootmeth for Android
>> >>   bootstd: Add test for bootmeth_android
>> >>
>> >>  MAINTAINERS   |   7 +
>> >>  arch/sandbox/dts/test.dts |   8 +
>> >>  boot/Kconfig  |  16 ++
>> >>  boot/Makefile |   2 +
>> >>  boot/bootflow.c   |  12 +
>> >>  boot/bootmeth_android.c   | 553 
>> >> ++
>> >>  boot/bootmeth_android.h   |  29 +++
>> >>  boot/image-android.c  |   5 +
>> >>  boot/image-fdt.c  |   2 +-
>> >>  cmd/abootimg.c|  10 +
>> >>  configs/sandbox_defconfig |   2 +-
>> >>  doc/develop/bootstd.rst   |   6 +
>> >>  include/bootflow.h|   9 +
>> >>  include/image.h   |  14 ++
>> >>  test/boot/bootflow.c  |  65 +-
>> >>  test/py/tests/test_ut.py  |  76 +++
>> >>  16 files changed, 811 insertions(+), 5 deletions(-)
>> >> ---
>> >> base-commit: f9886bc60f42d5bcfcfa4e474af7dc230400b6be
>> >> change-id: 20240605-bootmeth-android-bfc8596e9367
>> >>
>> >> Best regards,
>> >> --
>> >> Mattijs Korpershoek 
>> >>
>> >
>> > Thinking about this, I believe we should start having docs about the
>> > individual bootmeths themselves.
>>
>> Yes.
>>
>> >
>> > Can you add a section about your new bootmeth? I will come up with a
>> > patch for the others that I know about. Perhaps
>> > doc/develop/bootstd.rst would be a 

Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-18 Thread Simon Glass
Hi Mattijs,

On Mon, 17 Jun 2024 at 09:15, Mattijs Korpershoek
 wrote:
>
> Hi Simon,
>
> On lun., juin 17, 2024 at 07:53, Simon Glass  wrote:
>
> > Hi Mattijs,
> >
> > On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek
> >  wrote:
> >>
> >> Android boot flow is a bit different than a regular Linux distro.
> >> Android relies on multiple partitions in order to boot.
> >>
> >> A typical boot flow would be:
> >> 1. Parse the Bootloader Control Block (BCB, misc partition)
> >> 2. If BCB requested bootonce-bootloader, start fastboot and wait.
> >> 3. If BCB requested recovery or normal android, run the following:
> >>a. Get slot (A/B) from BCB
> >>b. Run AVB (Android Verified Boot) on boot partitions
> >>c. Load boot and vendor_boot partitions
> >>d. Load device-tree, ramdisk and boot
> >>
> >> The AOSP documentation has more details at [1], [2], [3]
> >>
> >> This has been implemented via complex boot scripts such as [4].
> >> However, these boot script are neither very maintainable nor generic.
> >> Moreover, DISTRO_DEFAULTS is being deprecated [5].
> >>
> >> Add a generic Android bootflow implementation for bootstd.
> >>
> >> For this initial version, only boot image v4 is supported.
> >>
> >> This has been tested on sandbox using:
> >> $ ./test/py/test.py --bd sandbox --build -k test_ut
> >>
> >> This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
> >> To test on TI board, the following (WIP) patch is needed as well:
> >> https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04
> >>
> >> [1] https://source.android.com/docs/core/architecture/bootloader
> >> [2] https://source.android.com/docs/core/architecture/partitions
> >> [3] 
> >> https://source.android.com/docs/core/architecture/partitions/generic-boot
> >> [4] 
> >> https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
> >> [5] 
> >> https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
> >> [6] 
> >> https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html
> >>
> >> Signed-off-by: Mattijs Korpershoek 
> >> ---
> >> Changes in v2:
> >> - Dropped patch 2/6 boot: android: Add image_android_get_version() (Igor)
> >> - Fixed multi-line comment style (Igor, Simon)
> >> - Added dependency on CMD_FASTBOOT for BOOTMETH_ANDROID (Igor)
> >> - Fixed various resource leaks (Igor)
> >> - Fixed bootmeth_priv dangling pointer on error cases (Igor)
> >> - Updated test instructions in commit message for patch 6/6
> >> - Added __weak impl of get_avendor_bootimg_addr() in patch 1 (dropped
> >>   Igor's review because of this change)
> >> - Added extra info in Kconfig to detail MMC limitation (Simon)
> >> - Fixed typo Bootmethod->Bootmeth (Simon)
> >> - Documented android_priv structure (Simon)
> >> - Demoted various messages from printf() to log_debug (Simon)
> >> - Fixed some lines too long (Simon)
> >> - Added function documentation to read_slotted_partition() (Simon)
> >> - Added some doc about avb extra_args being modified (Simon)
> >> - Link to v1: 
> >> https://lore.kernel.org/r/20240606-bootmeth-android-v1-0-0c69d4457...@baylibre.com
> >>
> >> ---
> >> Mattijs Korpershoek (5):
> >>   boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
> >>   bootstd: Add bootflow_iter_check_mmc() helper
> >>   android: boot: Add set_abootimg_addr() and set_avendor_bootimg_addr()
> >>   bootstd: Add a bootmeth for Android
> >>   bootstd: Add test for bootmeth_android
> >>
> >>  MAINTAINERS   |   7 +
> >>  arch/sandbox/dts/test.dts |   8 +
> >>  boot/Kconfig  |  16 ++
> >>  boot/Makefile |   2 +
> >>  boot/bootflow.c   |  12 +
> >>  boot/bootmeth_android.c   | 553 
> >> ++
> >>  boot/bootmeth_android.h   |  29 +++
> >>  boot/image-android.c  |   5 +
> >>  boot/image-fdt.c  |   2 +-
> >>  cmd/abootimg.c|  10 +
> >>  configs/sandbox_defconfig |   2 +-
> >>  doc/develop/bootstd.rst   |   6 +
> >>  include/bootflow.h|   9 +
> >>  include/image.h   |  14 ++
> >>  test/boot/bootflow.c  |  65 +-
> >>  test/py/tests/test_ut.py  |  76 +++
> >>  16 files changed, 811 insertions(+), 5 deletions(-)
> >> ---
> >> base-commit: f9886bc60f42d5bcfcfa4e474af7dc230400b6be
> >> change-id: 20240605-bootmeth-android-bfc8596e9367
> >>
> >> Best regards,
> >> --
> >> Mattijs Korpershoek 
> >>
> >
> > Thinking about this, I believe we should start having docs about the
> > individual bootmeths themselves.
>
> Yes.
>
> >
> > Can you add a section about your new bootmeth? I will come up with a
> > patch for the others that I know about. Perhaps
> > doc/develop/bootstd.rst would be a suitable place for now?
>
> Yes I can add a section. I would have preferred to have an example to
> work from there, but I can start writing docs as well.
>
> I'm leaving on vacation soon (without 

Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-17 Thread Mattijs Korpershoek
Hi Simon,

On lun., juin 17, 2024 at 07:53, Simon Glass  wrote:

> Hi Mattijs,
>
> On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek
>  wrote:
>>
>> Android boot flow is a bit different than a regular Linux distro.
>> Android relies on multiple partitions in order to boot.
>>
>> A typical boot flow would be:
>> 1. Parse the Bootloader Control Block (BCB, misc partition)
>> 2. If BCB requested bootonce-bootloader, start fastboot and wait.
>> 3. If BCB requested recovery or normal android, run the following:
>>a. Get slot (A/B) from BCB
>>b. Run AVB (Android Verified Boot) on boot partitions
>>c. Load boot and vendor_boot partitions
>>d. Load device-tree, ramdisk and boot
>>
>> The AOSP documentation has more details at [1], [2], [3]
>>
>> This has been implemented via complex boot scripts such as [4].
>> However, these boot script are neither very maintainable nor generic.
>> Moreover, DISTRO_DEFAULTS is being deprecated [5].
>>
>> Add a generic Android bootflow implementation for bootstd.
>>
>> For this initial version, only boot image v4 is supported.
>>
>> This has been tested on sandbox using:
>> $ ./test/py/test.py --bd sandbox --build -k test_ut
>>
>> This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
>> To test on TI board, the following (WIP) patch is needed as well:
>> https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04
>>
>> [1] https://source.android.com/docs/core/architecture/bootloader
>> [2] https://source.android.com/docs/core/architecture/partitions
>> [3] https://source.android.com/docs/core/architecture/partitions/generic-boot
>> [4] 
>> https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
>> [5] https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
>> [6] 
>> https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html
>>
>> Signed-off-by: Mattijs Korpershoek 
>> ---
>> Changes in v2:
>> - Dropped patch 2/6 boot: android: Add image_android_get_version() (Igor)
>> - Fixed multi-line comment style (Igor, Simon)
>> - Added dependency on CMD_FASTBOOT for BOOTMETH_ANDROID (Igor)
>> - Fixed various resource leaks (Igor)
>> - Fixed bootmeth_priv dangling pointer on error cases (Igor)
>> - Updated test instructions in commit message for patch 6/6
>> - Added __weak impl of get_avendor_bootimg_addr() in patch 1 (dropped
>>   Igor's review because of this change)
>> - Added extra info in Kconfig to detail MMC limitation (Simon)
>> - Fixed typo Bootmethod->Bootmeth (Simon)
>> - Documented android_priv structure (Simon)
>> - Demoted various messages from printf() to log_debug (Simon)
>> - Fixed some lines too long (Simon)
>> - Added function documentation to read_slotted_partition() (Simon)
>> - Added some doc about avb extra_args being modified (Simon)
>> - Link to v1: 
>> https://lore.kernel.org/r/20240606-bootmeth-android-v1-0-0c69d4457...@baylibre.com
>>
>> ---
>> Mattijs Korpershoek (5):
>>   boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
>>   bootstd: Add bootflow_iter_check_mmc() helper
>>   android: boot: Add set_abootimg_addr() and set_avendor_bootimg_addr()
>>   bootstd: Add a bootmeth for Android
>>   bootstd: Add test for bootmeth_android
>>
>>  MAINTAINERS   |   7 +
>>  arch/sandbox/dts/test.dts |   8 +
>>  boot/Kconfig  |  16 ++
>>  boot/Makefile |   2 +
>>  boot/bootflow.c   |  12 +
>>  boot/bootmeth_android.c   | 553 
>> ++
>>  boot/bootmeth_android.h   |  29 +++
>>  boot/image-android.c  |   5 +
>>  boot/image-fdt.c  |   2 +-
>>  cmd/abootimg.c|  10 +
>>  configs/sandbox_defconfig |   2 +-
>>  doc/develop/bootstd.rst   |   6 +
>>  include/bootflow.h|   9 +
>>  include/image.h   |  14 ++
>>  test/boot/bootflow.c  |  65 +-
>>  test/py/tests/test_ut.py  |  76 +++
>>  16 files changed, 811 insertions(+), 5 deletions(-)
>> ---
>> base-commit: f9886bc60f42d5bcfcfa4e474af7dc230400b6be
>> change-id: 20240605-bootmeth-android-bfc8596e9367
>>
>> Best regards,
>> --
>> Mattijs Korpershoek 
>>
>
> Thinking about this, I believe we should start having docs about the
> individual bootmeths themselves.

Yes.

>
> Can you add a section about your new bootmeth? I will come up with a
> patch for the others that I know about. Perhaps
> doc/develop/bootstd.rst would be a suitable place for now?

Yes I can add a section. I would have preferred to have an example to
work from there, but I can start writing docs as well.

I'm leaving on vacation soon (without computer), so I'll be able to
send a v3 with docs included in at earliest a 2-3 weeks from now.

If you make a patch for the other bootmeths in the mean-time, please cc
me so that I can help review and have an example for Android.

Thanks!
Mattijs

>
> Regards,
> Simon


Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-17 Thread Simon Glass
Hi Mattijs,

On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek
 wrote:
>
> Android boot flow is a bit different than a regular Linux distro.
> Android relies on multiple partitions in order to boot.
>
> A typical boot flow would be:
> 1. Parse the Bootloader Control Block (BCB, misc partition)
> 2. If BCB requested bootonce-bootloader, start fastboot and wait.
> 3. If BCB requested recovery or normal android, run the following:
>a. Get slot (A/B) from BCB
>b. Run AVB (Android Verified Boot) on boot partitions
>c. Load boot and vendor_boot partitions
>d. Load device-tree, ramdisk and boot
>
> The AOSP documentation has more details at [1], [2], [3]
>
> This has been implemented via complex boot scripts such as [4].
> However, these boot script are neither very maintainable nor generic.
> Moreover, DISTRO_DEFAULTS is being deprecated [5].
>
> Add a generic Android bootflow implementation for bootstd.
>
> For this initial version, only boot image v4 is supported.
>
> This has been tested on sandbox using:
> $ ./test/py/test.py --bd sandbox --build -k test_ut
>
> This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
> To test on TI board, the following (WIP) patch is needed as well:
> https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04
>
> [1] https://source.android.com/docs/core/architecture/bootloader
> [2] https://source.android.com/docs/core/architecture/partitions
> [3] https://source.android.com/docs/core/architecture/partitions/generic-boot
> [4] 
> https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
> [5] https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
> [6] 
> https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html
>
> Signed-off-by: Mattijs Korpershoek 
> ---
> Changes in v2:
> - Dropped patch 2/6 boot: android: Add image_android_get_version() (Igor)
> - Fixed multi-line comment style (Igor, Simon)
> - Added dependency on CMD_FASTBOOT for BOOTMETH_ANDROID (Igor)
> - Fixed various resource leaks (Igor)
> - Fixed bootmeth_priv dangling pointer on error cases (Igor)
> - Updated test instructions in commit message for patch 6/6
> - Added __weak impl of get_avendor_bootimg_addr() in patch 1 (dropped
>   Igor's review because of this change)
> - Added extra info in Kconfig to detail MMC limitation (Simon)
> - Fixed typo Bootmethod->Bootmeth (Simon)
> - Documented android_priv structure (Simon)
> - Demoted various messages from printf() to log_debug (Simon)
> - Fixed some lines too long (Simon)
> - Added function documentation to read_slotted_partition() (Simon)
> - Added some doc about avb extra_args being modified (Simon)
> - Link to v1: 
> https://lore.kernel.org/r/20240606-bootmeth-android-v1-0-0c69d4457...@baylibre.com
>
> ---
> Mattijs Korpershoek (5):
>   boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
>   bootstd: Add bootflow_iter_check_mmc() helper
>   android: boot: Add set_abootimg_addr() and set_avendor_bootimg_addr()
>   bootstd: Add a bootmeth for Android
>   bootstd: Add test for bootmeth_android
>
>  MAINTAINERS   |   7 +
>  arch/sandbox/dts/test.dts |   8 +
>  boot/Kconfig  |  16 ++
>  boot/Makefile |   2 +
>  boot/bootflow.c   |  12 +
>  boot/bootmeth_android.c   | 553 
> ++
>  boot/bootmeth_android.h   |  29 +++
>  boot/image-android.c  |   5 +
>  boot/image-fdt.c  |   2 +-
>  cmd/abootimg.c|  10 +
>  configs/sandbox_defconfig |   2 +-
>  doc/develop/bootstd.rst   |   6 +
>  include/bootflow.h|   9 +
>  include/image.h   |  14 ++
>  test/boot/bootflow.c  |  65 +-
>  test/py/tests/test_ut.py  |  76 +++
>  16 files changed, 811 insertions(+), 5 deletions(-)
> ---
> base-commit: f9886bc60f42d5bcfcfa4e474af7dc230400b6be
> change-id: 20240605-bootmeth-android-bfc8596e9367
>
> Best regards,
> --
> Mattijs Korpershoek 
>

Thinking about this, I believe we should start having docs about the
individual bootmeths themselves.

Can you add a section about your new bootmeth? I will come up with a
patch for the others that I know about. Perhaps
doc/develop/bootstd.rst would be a suitable place for now?

Regards,
Simon


Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-14 Thread Mattijs Korpershoek
Hi Guillaume,

Thank you for testing.

On ven., juin 14, 2024 at 11:53, Guillaume LA ROQUE  
wrote:

> Hi,
>
> i apply  patch series with commit you give in cover letter and test on 
> TI AM62S-SK board.
> Android boot properly , just with a small changes in uboot eenv
>
> setenv vendor_boot_comp_addr_r 0xd000

I see.

Thank you for sharing this.

I can confirm that this is indeed needed on next since
da3447d09fa0 ("android: Fix ramdisk loading for bootimage v3+").

Will take that into account when sending board support using bootmeth_android

>
> this changes is need link to patch done by roman on ramdisk and vendor 
> boot loading.
>
> so you can add for this series:
>
> Tested-by: Guillaume La Roque 
>
>

[...]


Re: [PATCH v2 0/5] bootstd: Add Android support

2024-06-14 Thread Guillaume LA ROQUE

Hi,

i apply  patch series with commit you give in cover letter and test on 
TI AM62S-SK board.

Android boot properly , just with a small changes in uboot eenv

setenv vendor_boot_comp_addr_r 0xd000

this changes is need link to patch done by roman on ramdisk and vendor 
boot loading.


so you can add for this series:

Tested-by: Guillaume La Roque 


Guillaume

Le 13/06/2024 à 12:13, Mattijs Korpershoek a écrit :

Android boot flow is a bit different than a regular Linux distro.
Android relies on multiple partitions in order to boot.

A typical boot flow would be:
1. Parse the Bootloader Control Block (BCB, misc partition)
2. If BCB requested bootonce-bootloader, start fastboot and wait.
3. If BCB requested recovery or normal android, run the following:
a. Get slot (A/B) from BCB
b. Run AVB (Android Verified Boot) on boot partitions
c. Load boot and vendor_boot partitions
d. Load device-tree, ramdisk and boot

The AOSP documentation has more details at [1], [2], [3]

This has been implemented via complex boot scripts such as [4].
However, these boot script are neither very maintainable nor generic.
Moreover, DISTRO_DEFAULTS is being deprecated [5].

Add a generic Android bootflow implementation for bootstd.

For this initial version, only boot image v4 is supported.

This has been tested on sandbox using:
$ ./test/py/test.py --bd sandbox --build -k test_ut

This has also been tested on the AM62X SK EVM using TI's Android SDK[6]
To test on TI board, the following (WIP) patch is needed as well:
https://gitlab.baylibre.com/baylibre/ti/ti-u-boot/-/commit/84cceb912bccd7cdd7f9dd69bca0e5d987a1fd04

[1] https://source.android.com/docs/core/architecture/bootloader
[2] https://source.android.com/docs/core/architecture/partitions
[3] https://source.android.com/docs/core/architecture/partitions/generic-boot
[4] 
https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/meson64_android.h
[5] https://lore.kernel.org/r/all/20230914165615.1058529-17-...@chromium.org/
[6] 
https://software-dl.ti.com/processor-sdk-android/esd/AM62X/09_02_00/docs/android/Overview.html

Signed-off-by: Mattijs Korpershoek 
---
Changes in v2:
- Dropped patch 2/6 boot: android: Add image_android_get_version() (Igor)
- Fixed multi-line comment style (Igor, Simon)
- Added dependency on CMD_FASTBOOT for BOOTMETH_ANDROID (Igor)
- Fixed various resource leaks (Igor)
- Fixed bootmeth_priv dangling pointer on error cases (Igor)
- Updated test instructions in commit message for patch 6/6
- Added __weak impl of get_avendor_bootimg_addr() in patch 1 (dropped
   Igor's review because of this change)
- Added extra info in Kconfig to detail MMC limitation (Simon)
- Fixed typo Bootmethod->Bootmeth (Simon)
- Documented android_priv structure (Simon)
- Demoted various messages from printf() to log_debug (Simon)
- Fixed some lines too long (Simon)
- Added function documentation to read_slotted_partition() (Simon)
- Added some doc about avb extra_args being modified (Simon)
- Link to v1: 
https://lore.kernel.org/r/20240606-bootmeth-android-v1-0-0c69d4457...@baylibre.com

---
Mattijs Korpershoek (5):
   boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
   bootstd: Add bootflow_iter_check_mmc() helper
   android: boot: Add set_abootimg_addr() and set_avendor_bootimg_addr()
   bootstd: Add a bootmeth for Android
   bootstd: Add test for bootmeth_android

  MAINTAINERS   |   7 +
  arch/sandbox/dts/test.dts |   8 +
  boot/Kconfig  |  16 ++
  boot/Makefile |   2 +
  boot/bootflow.c   |  12 +
  boot/bootmeth_android.c   | 553 ++
  boot/bootmeth_android.h   |  29 +++
  boot/image-android.c  |   5 +
  boot/image-fdt.c  |   2 +-
  cmd/abootimg.c|  10 +
  configs/sandbox_defconfig |   2 +-
  doc/develop/bootstd.rst   |   6 +
  include/bootflow.h|   9 +
  include/image.h   |  14 ++
  test/boot/bootflow.c  |  65 +-
  test/py/tests/test_ut.py  |  76 +++
  16 files changed, 811 insertions(+), 5 deletions(-)
---
base-commit: f9886bc60f42d5bcfcfa4e474af7dc230400b6be
change-id: 20240605-bootmeth-android-bfc8596e9367

Best regards,