Re: [PATCH v1 0/2] fastboot: mmc: fix bootloader offset

Mattijs Korpershoek
2026-01-26T09:48:15Z

Hi Heiko,

Thank you for the patch.

On Sat, Jan 24, 2026 at 06:47, Heiko Schocher <hs@nabladev.com> wrote:

> Not for all SoCs the bootloader start at offset 0x0,
> in a hardware partition of an emmc. So we need the possibility to
> set the correct offset, where bootloader starts.
>
> Example:
>
> imx8qxp revision C0 emmc Partition layout
>
> | eMMC block / partition | Offset | Size | Purpose |
> | ---------------------- | ---------- | ----- | ------------------------------ |
> | /dev/mmcblk0boot0 | 0x0 | 2MB | imx-boot-container A |
> | | 0x00220000 | 128kB | secure boot signature rootfs A |
> | /dev/mmcblk0boot1 | 0x0 | 2MB | imx-boot-container B |
> | | 0x00200000 | 8kB | U-Boot env 0 |
> | | 0x00202000 | 8kB | U-Boot env 1 |
> | | 0x00220000 | 128kB | secure boot signature rootfs B |
>
> imx8qxp rev B0 emmc Partition layout
>
> | eMMC block / partition | Offset | Size | Purpose |
> | ---------------------- | ---------- | ----- | ------------------------------ |
> | /dev/mmcblk0boot0 | 0x00008000 | 2MB | imx-boot-container A |
> | | 0x00220000 | 128kB | secure boot signature rootfs A |
> | /dev/mmcblk0boot1 | 0x0 | 8kB | U-Boot env 0 |
> | | 0x00002000 | 8kB | U-Boot env 1 |
> | | 0x00008000 | 2MB | imx-boot-container B |
>

Why can't we use raw partition descriptors for this?

See:
https://docs.u-boot.org/en/latest/android/fastboot.html#raw-partition-descriptors

> If we flash now the bootloader image flash.bin on a B0 revision with
>
> uuu FB: flash bootloader flash.bin
>
> we overwrite the environment and board does not boot at all, as offset
> is wrong.
>
> To prevent any API change in the above command we propose
> the following implementation from this series:
>
> We add a new weak function fb_mmc_get_boot_offset() in drivers/fastboot/fb_block.c
> which returns 0 and call this function instead of passing 0 for
> the offset where offset is used/passed.
>
> In SoC specific code (currently for IMX8QXP only) we implement this function
> that it returns on B0 SoCs the 32k offset and on other SoC revisions the
> offset 0.
>
> This is tested on B0 and C0 based boards from siemens.
>
> This patch should have no effect for other SoCs.
>
>
> Adrian Freihofer (2):
> fastboot: mmc: make boot partition offset configurable
> arch: imx8qxp: Override weak fb_mmc_get_boot_offset function
>
> arch/arm/mach-imx/imx8/cpu.c | 21 +++++++++++++++++++++
> drivers/fastboot/fb_block.c | 15 +++++++++++----
> 2 files changed, 32 insertions(+), 4 deletions(-)
>
> Azure build (series is in a bunch of siemens patches sending
> now to mainline):
> https://dev.azure.com/hs0298/hs/_build/results?buildId=202&view=results
>
>
> --
> 2.20.1
>
> base-commit: 547e4ff610d72169a2a8c72ffe9741046abd1b2e