From: Mattijs Korpershoek <mkorpershoek@baylibre.com>
To: Simon Glass <sjg@chromium.org>
Cc: Julien Masson <jmasson@baylibre.com>,
Guillaume La Roque <glaroque@baylibre.com>,
Dmitrii Merkurev <dimorinny@google.com>,
Roman Stratiienko <r.stratiienko@gmail.com>,
Igor Opaniuk <igor.opaniuk@gmail.com>,
u-boot@lists.denx.de
Subject: Re: [PATCH v2 0/5] bootstd: Add Android support
Date: Mon, 17 Jun 2024 17:15:52 +0200 [thread overview]
Message-ID: <87o77zbnx3.fsf@baylibre.com> (raw)
In-Reply-To: <CAFLszThimpJyRFg2Dc8QKyin7=BF2Gwkez6ifWOYGnf-=15HWg@mail.gmail.com>
Hi Simon,
On lun., juin 17, 2024 at 07:53, Simon Glass <sjg@chromium.org> wrote:
> Hi Mattijs,
>
> On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek
> <mkorpershoek@baylibre.com> 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-sjg@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 <mkorpershoek@baylibre.com>
>> ---
>> 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-0c69d4457cc5@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 <mkorpershoek@baylibre.com>
>>
>
> 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
next prev parent reply other threads:[~2024-06-17 15:16 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-13 10:13 [PATCH v2 0/5] bootstd: Add Android support Mattijs Korpershoek
2024-06-13 10:13 ` [PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt() Mattijs Korpershoek
2024-06-13 15:22 ` Simon Glass
2024-06-13 15:42 ` Julien Masson
2024-06-13 17:10 ` Igor Opaniuk
2024-06-13 18:43 ` Guillaume LA ROQUE
2024-06-13 10:13 ` [PATCH v2 2/5] bootstd: Add bootflow_iter_check_mmc() helper Mattijs Korpershoek
2024-06-13 14:16 ` Julien Masson
2024-06-13 18:44 ` Guillaume LA ROQUE
2024-06-13 10:13 ` [PATCH v2 3/5] android: boot: Add set_abootimg_addr() and set_avendor_bootimg_addr() Mattijs Korpershoek
2024-06-13 14:16 ` Julien Masson
2024-06-13 15:20 ` Simon Glass
2024-06-13 18:45 ` Guillaume LA ROQUE
2024-06-13 10:13 ` [PATCH v2 4/5] bootstd: Add a bootmeth for Android Mattijs Korpershoek
2024-06-13 14:19 ` Julien Masson
2024-06-13 10:13 ` [PATCH v2 5/5] bootstd: Add test for bootmeth_android Mattijs Korpershoek
2024-06-13 14:19 ` Julien Masson
2024-06-13 18:47 ` Guillaume LA ROQUE
2024-06-14 9:53 ` [PATCH v2 0/5] bootstd: Add Android support Guillaume LA ROQUE
2024-06-14 11:44 ` Mattijs Korpershoek
2024-06-17 13:53 ` Simon Glass
2024-06-17 15:15 ` Mattijs Korpershoek [this message]
2024-06-19 3:03 ` Simon Glass
2024-06-19 9:25 ` Mattijs Korpershoek
2024-07-24 12:43 ` Mattijs Korpershoek
2024-06-20 14:23 ` Tom Rini
2024-07-04 9:09 ` Mattijs Korpershoek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87o77zbnx3.fsf@baylibre.com \
--to=mkorpershoek@baylibre.com \
--cc=dimorinny@google.com \
--cc=glaroque@baylibre.com \
--cc=igor.opaniuk@gmail.com \
--cc=jmasson@baylibre.com \
--cc=r.stratiienko@gmail.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.