From: Anshul Dalal <anshuld@ti.com>
To: Andrew Davis <afd@ti.com>, <anshuld@ti.com>,
<meta-arago@lists.yoctoproject.org>
Cc: <vigneshr@ti.com>, <denys@konsulko.com>, <reatmon@ti.com>
Subject: Re: [meta-arago][scarthgap][PATCH RFC 3/4] swupdate: add bootloader support
Date: Wed, 3 Dec 2025 15:46:06 +0530 [thread overview]
Message-ID: <DEOI4UB95HE8.HQIWL8ZAPCCP@ti.com> (raw)
In-Reply-To: <4ca3917b-8303-4f5b-bd42-65cfb19551db@ti.com>
On Wed Dec 3, 2025 at 12:53 AM IST, Andrew Davis wrote:
> On 12/2/25 5:16 AM, Anshul Dalal via lists.yoctoproject.org wrote:
>> U-Boot uses the 'bootpart' env variable to configure the rootfs for the
>> kernel at boot. The BACKUP_REG0 MMR is also used to store bootcount as
>> per U-Boot requirements[1].
>>
>> After each reset, U-Boot increments the bootcount and it's reset to 0 by
>> the swupdate service indicating a successful boot. If the kernel panics
>> however (eg. if the update failed), the bootcount is never reset and
>> keeps on getting incremented by U-Boot until it reaches certain
>> threshold after which U-Boot switches to the other non-updated partition
>> to ensure a successful boot.
>>
>> This patch adds support for the same to the final .swu image generated
>> by the update-image recipe.
>>
>> [1]: https://docs.u-boot.org/en/latest/api/bootcount.html
>>
>> Signed-off-by: Anshul Dalal <anshuld@ti.com>
>> ---
>> .../recipes-swupdate/images/files/sw-description | 12 ++++++++++++
>> .../recipes-swupdate/libubootenv/files/fw_env.config | 5 +++++
>> .../libubootenv/libubootenv_%.bbappend | 10 ++++++++++
>> .../recipes-swupdate/swupdate/files/defconfig | 2 ++
>> .../recipes-swupdate/swupdate/files/swupdate.sh | 4 ++++
>> .../recipes-swupdate/swupdate/swupdate_%.bbappend | 2 ++
>> 6 files changed, 35 insertions(+)
>> create mode 100644 meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config
>> create mode 100644 meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend
>>
>> diff --git a/meta-arago-distro/recipes-swupdate/images/files/sw-description b/meta-arago-distro/recipes-swupdate/images/files/sw-description
>> index 8dc4e2b2..241bc95c 100644
>> --- a/meta-arago-distro/recipes-swupdate/images/files/sw-description
>> +++ b/meta-arago-distro/recipes-swupdate/images/files/sw-description
>> @@ -15,6 +15,12 @@ software =
>> compressed = "zlib";
>> },
>> );
>> + uboot: (
>> + {
>> + name = "bootpart";
>> + value = "0:1";
>> + },
>> + );
>> };
>>
>> copy2 : {
>> @@ -26,6 +32,12 @@ software =
>> compressed = "zlib";
>> },
>> );
>> + uboot: (
>> + {
>> + name = "bootpart";
>> + value = "0:2";
>> + },
>> + );
>> };
>> };
>> }
>> diff --git a/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config b/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config
>> new file mode 100644
>> index 00000000..57eec5fc
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config
>> @@ -0,0 +1,5 @@
>> +# Describes the env location for U-Boot in the hw partition
>> +# Second entry indicates redundant env
>> +# Boot dev Offset Size
>> +/dev/mmcblk0boot0 0x680000 0x20000
>> +/dev/mmcblk0boot0 0x6a0000 0x20000
>> diff --git a/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend b/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend
>> new file mode 100644
>> index 00000000..e3d142f2
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend
>> @@ -0,0 +1,10 @@
>> +FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
>> +
>> +SRC_URI:append = " file://fw_env.config"
>> +
>> +do_install:append() {
>> + install -d ${D}${sysconfdir}
>> + install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}
>> +}
>> +
>> +FILES:${PN}:append = " ${sysconfdir}"
>> diff --git a/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig b/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig
>> index b1362eaa..4a2d78c0 100644
>> --- a/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig
>> +++ b/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig
>> @@ -1,8 +1,10 @@
>> CONFIG_HW_COMPATIBILITY=y
>> # CONFIG_LUA is not set
>> # CONFIG_BOOTLOADER_NONE is not set
>> +CONFIG_UBOOT=y
>> CONFIG_SYSTEMD=y
>> CONFIG_WEBSERVER=y
>> +CONFIG_BOOTLOADERHANDLER=y
>> CONFIG_CFI=y
>> CONFIG_EMMC_HANDLER=y
>> CONFIG_RAW=y
>> diff --git a/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh b/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh
>> index bb3a3593..2083062e 100644
>> --- a/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh
>> +++ b/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh
>> @@ -8,4 +8,8 @@ else
>> SELECTION="-e stable,copy2"
>> fi
>>
>> +# BACKUP_REG0 MMR on AM62x
>> +UBOOT_BOOTCOUNT_ADDR=0x4301c100
>> +
>> +devmem2 $UBOOT_BOOTCOUNT_ADDR w 0
>
> Yuck, magic memory locations and /dev/mem, I'm trying to get
> rid of our dependence on /dev/mem in general so let's not add
> to the problem. How about CONFIG_BOOTCOUNT_FS?
>
As Yogesh suggested, it might be better to go with env since it's more
commonly used.
This would eliminate the need for devmem as well.
> Or maybe store it in an EFI variable, look into efivarfs and
> see if we can do something with that to allow usersapce access
> to this count.
>
The A/B rollback is already well supported with EFI (that's how CIP does
it for example), what we want to provide is redundancy for the entire
software stack including the bootloader. This RFC doesn't implement it
yet but this will be added in a later revision.
Regards,
Anshul
[snip]
next prev parent reply other threads:[~2025-12-03 10:16 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-02 11:15 [meta-arago][scarthgap][PATCH RFC 0/4] Add support for SWUpdate Anshul Dalal
2025-12-02 11:15 ` [meta-arago][scarthgap][PATCH RFC 1/4] swupdate: add systemd service to rootfs Anshul Dalal
2025-12-02 11:15 ` [meta-arago][scarthgap][PATCH RFC 2/4] swupdate: add creation of update image Anshul Dalal
2025-12-02 11:16 ` [meta-arago][scarthgap][PATCH RFC 3/4] swupdate: add bootloader support Anshul Dalal
2025-12-02 19:23 ` Andrew Davis
2025-12-03 10:16 ` Anshul Dalal [this message]
2025-12-03 5:58 ` Yogesh Hegde
2025-12-03 10:23 ` Anshul Dalal
2025-12-02 11:16 ` [meta-arago][scarthgap][PATCH RFC 4/4] swupdate: enable authentication for update image Anshul Dalal
2025-12-02 20:59 ` [meta-arago][scarthgap][PATCH RFC 0/4] Add support for SWUpdate Denys Dmytriyenko
2025-12-03 14:07 ` Raghavendra, Vignesh
2026-05-29 12:33 ` Romain Naour
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=DEOI4UB95HE8.HQIWL8ZAPCCP@ti.com \
--to=anshuld@ti.com \
--cc=afd@ti.com \
--cc=denys@konsulko.com \
--cc=meta-arago@lists.yoctoproject.org \
--cc=reatmon@ti.com \
--cc=vigneshr@ti.com \
/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.