Skip to content

refactor(debos/flash)!: switch RB1 to EDK2-based boot firmware - #593

Draft
Christopher Obbard (obbardc) wants to merge 7 commits into
mainfrom
wip/obbardc/qrb2210-switch-to-edkii-bootflow
Draft

refactor(debos/flash)!: switch RB1 to EDK2-based boot firmware#593
Christopher Obbard (obbardc) wants to merge 7 commits into
mainfrom
wip/obbardc/qrb2210-switch-to-edkii-bootflow

Conversation

@obbardc

@obbardc Christopher Obbard (obbardc) commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Replace the old 96 Boards/Linaro rescue image for qrb2210-rb1 with the
QRB2210_bootbinaries.1.0 boot firmware release (00021), published on
the Qualcomm Software Center. This new release changes the qrb2210-rb1
boot flow to the new EDK2-downstream baseline, instead of chain-loading
a custom U-Boot image from the rescue image.

The new bootloader requires a different partition layout to be flashed
to the device; introduced in qualcomm-linux/qcom-ptool#109.

The same change will be made for qrb2210-arduino-imola in a follow-up PR (waiting on validation: qualcomm-linux/meta-qcom-3rdparty#28).

Reference: qualcomm-linux/meta-qcom#2057


TODO (PR is draft until these are resolved)

  • check if we can remove qbootctl - defer to a separate PR and check if any interaction with Add armhf image support #510
  • check if we can remove u-boot-efi-dtb - yes, we can drop u-boot-efi-dtb, mark this as a breaking change as arduino-deb-images might depend on it, but they can continue adding it in their layer - defer to a separate PR
  • deprecate the U-Boot scripts and drop them from docs
      • remove scripts/build-u-boot-rb1.sh, .github/workflows/u-boot.yml, reference to u-boot in CONTRIBUTING.md and reference to u-boot-rb1-latest in .github/workflows/efs-maintenance.yml

Validation

Follow-ups

@obbardc Christopher Obbard (obbardc) changed the title refactor(debos/flash): rb1: switch to edk2-based boot firmware refactor(debos/flash)!: rb1: switch to edk2-based boot firmware Aug 21, 2026
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from d474803 to 8337fe4 Compare August 21, 2026 15:04
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

Test Results

  7 files  ±0   21 suites  ±0   22m 51s ⏱️ ±0s
 21 tests ±0   21 ✅ ±0  0 💤 ±0  0 ❌ ±0 
180 runs  ±0  179 ✅ ±0  1 💤 ±0  0 ❌ ±0 

Results for commit 477ccdc. ± Comparison against base commit 0257878.

♻️ This comment has been updated with latest results.

@github-actions

Copy link
Copy Markdown

@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from 8337fe4 to 3735679 Compare August 21, 2026 19:21
@obbardc Christopher Obbard (obbardc) changed the title refactor(debos/flash)!: rb1: switch to edk2-based boot firmware refactor(debos/flash)!: switch RB1 to EDK2-based boot firmware Aug 21, 2026
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch 2 times, most recently from 65200af to a3805ba Compare August 21, 2026 19:33
@github-actions

Copy link
Copy Markdown

@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from a3805ba to 3dbfd10 Compare August 22, 2026 18:56
Christopher Obbard (obbardc) added a commit that referenced this pull request Aug 22, 2026
The reverted commit bumps qcom-ptool to a version which includes a
breaking change to the qrb2210-rb1 partition layout, which switches the
partitions to a new layout for the EDK-II based bootflow. Unfortunately
that is incompatible with the existing U-Boot based bootflow which the
qcom-deb-images currently uses (see switching to EDK-II in #593) and
removes the boot_a and boot_b partitions where we currently chain
U-Boot. Revert the change to allow qrb2210-rb1 to boot again.

This reverts commit 5ae45ff.

See: #587
Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
@github-actions

Copy link
Copy Markdown

@lool

Copy link
Copy Markdown
Contributor

Christopher Obbard (@obbardc) Thanks for starting this; a few bits:

  • yes, Please add support for Agatti/qcm2290 soc qcom-dtb-metadata#126 is related but you use a "combined dtb" style for both boards in the board database instead of a FIT image, and it will work for now – we'll only miss fancy overlays, but some other boards miss it it too
  • yes, we could remove qbootctl, these were the only official platforms that needed it, but it's a bit orthogonal, and Dmitry might be adding support for platforms that need it, so we can do it in a followup PR, taking the time to discuss
  • yes, we can drop u-boot-efi-dtb, mark this as a breaking change as arduino-deb-images might depend on it, but they can continue adding it in their layer; you can also defer to a separate PR
  • don't bother with EFS cleanup, there's an artifact aging process that should eventually garbage collect this
  • I would only deprecate the U-Boot scripts and drop them from docs; you can also do this in a separate PR

I would convert both agatti boards in one PR – RB1 and UNOQ, otherwise the current scope of your PR is fine.

The following changes were merged in qcom-ptool:

Ali Erdinc Koroglu (1):
      tests: add pytest-based unit tests

Amer Alshanawany (1):
      qcom_ptool: loaders: parse uniqueguid from partition config

Fang Wu (1):
      Revert "platforms/qcs615-ride: add uefivarstore partition to UFS
        layout"

Igor Opaniuk (6):
      pyproject: drop duplicate pytest ini_options section
      README: fix project name in title
      pyproject: declare PyYAML and jsonschema runtime deps
      README: document PyYAML and jsonschema runtime deps
      loaders: add YAML partition loader with schema validation
      tests: cover the YAML loader and schema

Ricardo Salveti (1):
      qrb2210-rb1: update partitions based on the edk2-downstream boot
        firmware

Royyan Zahir (1):
      tests: cover the named GPT attribute flags

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
Replace the old 96 Boards/Linaro rescue image for qrb2210-rb1 with the
QRB2210_bootbinaries.1.0 boot firmware release (00021) published on
the Qualcomm Software Center. This new release changes the qrb2210-rb1
boot flow to the new EDK2-downstream baseline; superseding the U-Boot
based rescue-image flow.

Wire up the matching RB1 Core Kit CDT download and cdt_filename so the
CDT binary is included in the flashing package.

The new bootloader requires a different partition layout to be flashed
to the device; introduced in qualcomm-linux/qcom-ptool#109.

As the board now boots through the EDK2 bootflow shipped with its boot
binaries, the custom U-Boot image is no longer needed. Drop the
u_boot_rb1 option from the flash recipe along with the u_boot_file
board field, which was only used to overwrite boot.img in the flash
directory with the custom U-Boot binary; the boot.img from the board's
boot binaries is now used as-is. As the option also gated whether the
board was built at all, qrb2210-rb1 is now built unconditionally like
every other board and is selected with `target_boards`.

Stop installing the U-Boot image into the artifacts and drop the build
instructions from the README.

The (unused) U-Boot build workflow and scripts/build-u-boot-rb1.sh are
left in place for now.

Reference: qualcomm-linux/meta-qcom#2057
Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
RB1 now boots the EDK2-based firmware shipped with its boot binaries;
we no longer need to build a custom U-Boot image, so there is nothing
left that uses the artifacts this workflow builds.

Drop the weekly schedule so it stops occupying the self-hosted runners
for a build nothing depends on and note at the top of the file that the
workflow is deprecated. Manual runs via workflow_dispatch are kept for
now, until the workflow and scripts/build-u-boot-rb1.sh are removed.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
The u-boot-efi-dtb package installs a kernel hook copying the device
trees shipped by the kernel package to /boot/efi/dtb, where U-Boot picks
them up. This was only useful on RB1: the sole board booting U-Boot and
required working around its postinst in the image recipe: diverting the
kernel hook so it doesn't fail outside qemu, installing the package only
once the ESP is mounted and copying an initial set of DTBs.

Now that RB1 boots through the EDK-II bootflow, no board uses these DTBs
anymore so drop the package and the action to copy the initial set of
DTBs.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
qbootctl marks the current Android boot partition as successfully
booted, which the Android bootloader needs so it doesn't fall back to
the other slot after a few boots. This was only required on RB1 where
the Android bootloader chainloaded U-Boot from the boot_a/boot_b
partitions.

As RB1 now boots through the EDK2 bootflow, no supported board depends
on this slot handling any more so drop the package.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from 3dbfd10 to 477ccdc Compare August 27, 2026 12:52
@github-actions

Copy link
Copy Markdown

See qualcomm-linux/qcom-ptool#165

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
TODO; expand.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants