All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anshul Dalal <anshuld@ti.com>
To: <meta-arago@lists.yoctoproject.org>
Cc: Anshul Dalal <anshuld@ti.com>, <vigneshr@ti.com>,
	<denys@konsulko.com>, <reatmon@ti.com>
Subject: [meta-arago][scarthgap][PATCH RFC 3/4] swupdate: add bootloader support
Date: Tue, 2 Dec 2025 16:46:00 +0530	[thread overview]
Message-ID: <20251202111603.1616989-4-anshuld@ti.com> (raw)
In-Reply-To: <20251202111603.1616989-1-anshuld@ti.com>

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
 swupdate -H @MACHINE@:1.0 ${SELECTION} -p 'reboot' -f /etc/swupdate.cfg -w "-r /www -p 8080"
diff --git a/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend b/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend
index 0ce763f9..20f87435 100644
--- a/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend
+++ b/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend
@@ -2,6 +2,8 @@ inherit swupdate-lib
 
 FILESEXTRAPATHS:append := "${THISDIR}/files:"
 
+RDEPENDS:${PN} += "devmem2"
+
 FILES:${PN} += " \
   ${SWUPDATE_HW_COMPATIBILITY_FILE} \
 "
-- 
2.52.0



  parent reply	other threads:[~2025-12-02 11: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 ` Anshul Dalal [this message]
2025-12-02 19:23   ` [meta-arago][scarthgap][PATCH RFC 3/4] swupdate: add bootloader support Andrew Davis
2025-12-03 10:16     ` Anshul Dalal
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=20251202111603.1616989-4-anshuld@ti.com \
    --to=anshuld@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.