All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Strachan <astrachan@google.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 0/7] android: Implement A/B boot process
Date: Tue, 27 Nov 2018 12:09:59 -0800	[thread overview]
Message-ID: <CANDihLFqC-KxQ51U3xXg+OmqF4PQ9M=ei6Tant5-cigpNNBUbQ@mail.gmail.com> (raw)
In-Reply-To: <1543348642-31045-1-git-send-email-ruslan.trofymenko@linaro.org>

On Tue, Nov 27, 2018 at 11:57 AM Ruslan Trofymenko
<ruslan.trofymenko@linaro.org> wrote:
>
> This patch series adds support for Android A/B boot process [1].
> Main steps of A/B boot process are:
>   - A/B metadata integrity check
>   - looking for the current slot (where the system should be
>     booting from)
>   - getting the name of the current boot partition (boot_a or boot_b)
>     and loading the corresponding Android boot image
>   - getting the name of the current system partition (system_a or
>     system_b) and passing of its full name via kernel command line
>     (like 'root=/dev/mmcblk1p11')
>   - passing current slot via kernel command line (like
>     'androidboot.slot_suffix=_a') and via A/B metadata (e.g. via
>     misc partition)
>   - A/B metadata processing: setting the boot success flag for
>     current slot, handling the retry counter, etc
>
> A/B metadata is organized according to Android reference [2] and stored
> on 'misc' partition. On the first A/B boot process, when 'misc'
> partition doesn't contain required data, default A/B metadata will be
> created and stored in 'misc' partition. In the end of the Android boot,
> 'update_verifier' and 'update_engine' services are processing the
> A/B metadata through the Boot Control HAL. To confirm the boot was
> successful using current slot, "boot success" flag must be set on
> Android side.
>
> To enable Android A/B support in U-Boot:
>   1. Set the following config options:
>
>          CONFIG_ANDROID_AB=y
>          CONFIG_CMD_ANDROID_AB_SELECT=y
>
>   2. Change the disk layout so that it has sloted boot partitions.
>      E.g. instead of 'boot' and 'system' partitions there should be
>      'boot_a', 'boot_b', 'system_a' and 'system_b' partitions.
>
> To be able to actually test this patch series, the A/B features must
> be implemented and enabled in Android as well (see [1] for details).
>
> Documentation and corresponding test for A/B boot is present here. The
> last patch in this series integrates A/B boot support on AM57xx based
> boards (though it's not enabled by default). Future users of A/B boot
> feature can use it as a reference.
>
> This series is a part of previous submission [3] by Alex Deymo. It
> contains only A/B feature that was stripped out from there with some
> modifications for using with "bootm" command preferred in upstream.
>
> [1] https://source.android.com/devices/tech/ota/ab/ab_implement
> [2] bootable/recovery/bootloader_message/include/bootloader_message/bootloader_message.h
> [3] https://lists.denx.de/pipermail/u-boot/2017-April/285841.html
>
> Ruslan Trofymenko (7):
>   cmd: part: Add 'number' sub-command
>   disk: part: Extend API to get partition info
>   common: Implement A/B metadata
>   cmd: Add 'android_ab_select' command
>   test/py: Add base test case for A/B updates
>   doc: android: Add simple guide for A/B updates
>   env: am57xx: Implement A/B boot process
>
>  cmd/Kconfig                          |  11 ++
>  cmd/Makefile                         |   1 +
>  cmd/android_ab_select.c              |  53 +++++++
>  cmd/part.c                           |  16 +-
>  common/Kconfig                       |  10 ++
>  common/Makefile                      |   1 +
>  common/android_ab.c                  | 278 +++++++++++++++++++++++++++++++++++
>  configs/sandbox_defconfig            |   2 +
>  disk/part.c                          |  68 +++++++++
>  doc/README.android-ab                |  67 +++++++++
>  include/android_ab.h                 |  34 +++++
>  include/android_bootloader_message.h | 164 +++++++++++++++++++++
>  include/environment/ti/boot.h        |  44 +++++-
>  include/part.h                       |  21 +++
>  test/py/tests/test_ab.py             |  74 ++++++++++
>  15 files changed, 839 insertions(+), 5 deletions(-)
>  create mode 100644 cmd/android_ab_select.c
>  create mode 100644 common/android_ab.c
>  create mode 100644 doc/README.android-ab
>  create mode 100644 include/android_ab.h
>  create mode 100644 include/android_bootloader_message.h
>  create mode 100644 test/py/tests/test_ab.py

Looks good, thanks Ruslan!

Reviewed-by: Alistair Strachan <astrachan@google.com>

>
> --
> 2.7.4
>

  parent reply	other threads:[~2018-11-27 20:09 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-27 19:57 [U-Boot] [PATCH 0/7] android: Implement A/B boot process Ruslan Trofymenko
2018-11-27 19:57 ` [U-Boot] [PATCH 1/7] cmd: part: Add 'number' sub-command Ruslan Trofymenko
2018-12-06  1:31   ` Simon Glass
2018-11-27 19:57 ` [U-Boot] [PATCH 2/7] disk: part: Extend API to get partition info Ruslan Trofymenko
2018-12-06  1:31   ` Simon Glass
2018-11-27 19:57 ` [U-Boot] [PATCH 3/7] common: Implement A/B metadata Ruslan Trofymenko
2018-12-06  1:31   ` Simon Glass
2019-04-03 17:55     ` Eugeniu Rosca
2019-04-07 16:51       ` Eugeniu Rosca
2019-04-07 19:11       ` Igor Opaniuk
2019-04-07 22:22         ` Eugeniu Rosca
2018-11-27 19:57 ` [U-Boot] [PATCH 4/7] cmd: Add 'android_ab_select' command Ruslan Trofymenko
2018-11-27 19:57 ` [U-Boot] [PATCH 5/7] test/py: Add base test case for A/B updates Ruslan Trofymenko
2018-12-06  1:31   ` Simon Glass
2018-11-27 19:57 ` [U-Boot] [PATCH 6/7] doc: android: Add simple guide " Ruslan Trofymenko
2018-12-06  1:31   ` Simon Glass
2018-12-10 19:10     ` Ruslan Trofymenko
2018-12-11  0:00       ` Simon Glass
2018-11-27 19:57 ` [U-Boot] [PATCH 7/7] env: am57xx: Implement A/B boot process Ruslan Trofymenko
2018-11-27 20:09 ` Alistair Strachan [this message]
2018-11-28 14:38 ` [U-Boot] [PATCH 0/7] android: " Sam Protsenko

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='CANDihLFqC-KxQ51U3xXg+OmqF4PQ9M=ei6Tant5-cigpNNBUbQ@mail.gmail.com' \
    --to=astrachan@google.com \
    --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.