Hi Simon,

On Tue, 29 Apr 2025 at 10:33, Simon Glass <s...@chromium.org> wrote:
>
> Hi Raymond,
>
> On Mon, 28 Apr 2025 at 08:41, Raymond Mao <raymond....@linaro.org> wrote:
> >
> > Hi Simon,
> >
> > On Thu, 17 Apr 2025 at 14:16, Simon Glass <s...@chromium.org> wrote:
> > >
> > >
> > > This series adds a standard way of passing information between different
> > > firmware phases. This already exists in U-Boot at a very basic level, in
> > > the form of a bloblist containing an spl_handoff structure, but the intent
> > > here is to define something useful across projects.
> > >
> > > The need for this is growing as firmware fragments into multiple binaries
> > > each with its own purpose. Without any run-time connection, we must rely
> > > on build-time settings which are brittle and painful to keep in sync.
> > >
> > > This feature is named 'standard passage' since the name is more unique
> > > than many others that could be chosen, it is a passage in the sense that
> > > information is flowing from one place to another and it is standard,
> > > because that is what we want to create.
> > >
> > > The implementation is mostly a pointer to a bloblist in a register, with
> > > an extra register to point to a devicetree, for more complex data. This
> > > should cover all cases (small memory footprint as well as complex data
> > > flow) and be easy enough to implement on all architectures.
> > >
> > > The emphasis is on enabling open communcation between binaries, not
> > > enabling passage of secret, undocumented data, although this is possible
> > > in a private environment.
> > >
> > > This series is available at u-boot-dm/pass-working
> > >
> >
> > First of all, can you group those patches which are necessary for
> > refactoring the "passage" concept into a smaller series for an easy
> > review?
>
> What do you mean by refactoring? I don't believe my series has much
> value unless it actually brings in 'standard passage' and everything
> that goes with that, e.g. the validation and documentation.
>
> >
> > Actually as I mentioned in our previous discussions, I don't agree to
> > add a OF_BLOBLIST as this is duplicated with "BLOBLIST +
> > BLOBLIST_PASSAGE_MANDATORY (aka PASSAGE_IN in the context of your
> > patch - I am not sure the reason you prefer to rename it - do we have
> > any other passage approaches other than using bloblist? And do you
> > have any considerations to allow a fallback or not in case passage
> > failures?)"
>
> This is how I would like it to work, i.e. that one specifically
> chooses OF_BLOBLIST. This split of bloblib and whether or not it is
> mandatory is just confusing.
>
> >
> > Secondly I prefer to keep the register convention code as a xferlist
> > library that can be used for arm arches other than split them into
> > different low level assemblies. In case of any firmware handoff
> > specification update, we just need to maintain this library.
>
> I don't agree with that, sorry. This should be a standard feature of
> U-Boot. It is easier to update three 'store' instructions in the
> assembler than to figure out what is going on with the xferlist
> functions. They are really just an obfuscation from the Arm point of
> view, the only current implementer of the spec.
>
> I have tried my series with your QEMU things but it doesn't work. So I
> went back to try your original instructions with your series and it
> didn't work either. Would it be possible for you to get the pending
> patches in the other projects submitted and then send me an update re
> the instructions? I would like to get the environment running again,
> but there are too many moving parts at present.
>

For me, it works fine on OP-TEE repo with my series and the manual
steps I mentioned in previous conversations, if you still have
problems running it, please retry after all OP-TEE patches are merged.
You can track the status with PR [1].
Once all patches are merged, I will add this into OP-TEE CI.

For other points we discussed here and in previous discussions, sorry
I cannot agree with you but I leave that to the maintainers group to
decide.

[1] https://github.com/OP-TEE/build/pull/821

Regards,
Raymond



> Regards,
> SImon
>
> >
> > Regards,
> > Raymond
> >
> > > Changes in v3:
> > > - Add a build for aarch64 as well
> > > - Add conditions to avoid enaling the test on qemu_arm_sbsa
> > > - Add mention of QEMU_MANUAL_DTB in doc/
> > > - Add new patch to adjust how the bloblist is received from stdpass
> > > - Add new patch to redo how a devicetree is set up
> > > - Add passage_valid() to decide if stdpass was provided
> > > - Add support for a 64-bit test also
> > > - Add support for aarch64 also
> > > - Add test for aarch64
> > > - Add tests for azure
> > > - Drop common.h
> > > - Fix 'that' typo
> > > - Fix 'usiing' typo
> > > - Make the global_data fields present only when needed
> > > - Move arch_passage_entry() into this patch
> > > - Move passage.h into this patch
> > > - Rebase to -master
> > > - Refresh the U-Boot output in the documentation
> > > - Update docs for the various code changes
> > > - Update registers to match the Firmware Handoff protocol
> > > - Use bootph tags
> > >
> > > Changes in v2:
> > > - Add a devicetree for qemu-arm so that qemu_arm_spl can work
> > > - Add a new QEMU-specific Kconfig instead
> > > - Add comments about how to pass standard passage to EFI
> > > - Add comments about passing a bloblist to Linux
> > > - Add detailed arch-specific information
> > > - Add new patch with the arm-specific standard passage implementation
> > > - Fix 'it' typo
> > > - Make the stdpass calling standard arch-specific
> > > - Move patch into the standard-passage series
> > > - Rebase on -master
> > > - Rebase to master
> > > - Rebase to master (dropping bloblist patches already applied)
> > > - Rework global_data for new stdpass convention
> > > - Split the jump_to_image_no_args() change into its own patch
> > > - Update the commit message to mention the long lines
> > > - Use three registers instead of two for the entry
> > >
> > > Simon Glass (22):
> > >   RFC: scripts: Add a script for running QEMU
> > >   emulation: fdt: Allow using U-Boot's device tree with QEMU
> > >   spl: Tidy up the header includes
> > >   x86: Move Intel GNVS file into the common include directory
> > >   spl: Rename jump_to_image_no_args()
> > >   passage: Support an incoming passage
> > >   fdt: Redo devicetree setup
> > >   fdt: Support reading FDT from standard passage
> > >   bloblist: Adjust how the bloblist is received from passage
> > >   passage: arm: Accept a passage from the previous phase
> > >   passage: spl: Support adding the dtb to the passage bloblist
> > >   passage: spl: Support passing the passage to U-Boot
> > >   passage: arm: Add the arch-specific standard passage impl
> > >   arm: qemu: Add an SPL build
> > >   arm: qemu: Add a 64-bit SPL build
> > >   xferlist: Drop old xferlist code
> > >   passage: Add a qemu test for ARM
> > >   sandbox: Add a way of checking structs for standard passage
> > >   passage: Add documentation
> > >   passage: Add docs for spl_handoff
> > >   passage: Add checks for pre-existing blobs
> > >   CI: Add tests for gitlab and azure
> > >
> > >  .azure-pipelines.yml                          |   6 +
> > >  .gitlab-ci.yml                                |  12 +
> > >  MAINTAINERS                                   |  10 +
> > >  Makefile                                      |   2 +-
> > >  arch/arm/Kconfig                              |   2 +-
> > >  arch/arm/cpu/armv7/cpu.c                      |  18 +
> > >  arch/arm/cpu/armv7/start.S                    |  10 +-
> > >  arch/arm/cpu/armv8/cpu.c                      |  19 +
> > >  arch/arm/cpu/armv8/start.S                    |  12 +
> > >  arch/arm/dts/qemu-arm-u-boot.dtsi             |  22 +
> > >  arch/arm/dts/qemu-arm.dts                     | 393 +++++++++++++++++-
> > >  arch/arm/dts/qemu-arm64-u-boot.dtsi           |  29 ++
> > >  arch/arm/dts/qemu-arm64.dts                   | 338 ++++++++++++++-
> > >  arch/arm/lib/Makefile                         |   1 -
> > >  arch/arm/lib/crt0.S                           |   6 +
> > >  arch/arm/lib/crt0_64.S                        |   6 +
> > >  arch/arm/lib/xferlist.c                       |  23 -
> > >  arch/arm/lib/xferlist.h                       |  19 -
> > >  arch/arm/mach-imx/imx8ulp/soc.c               |   2 +-
> > >  arch/arm/mach-imx/spl.c                       |   2 +-
> > >  arch/arm/mach-omap2/boot-common.c             |   2 +-
> > >  arch/arm/mach-qemu/Kconfig                    |  20 +-
> > >  arch/arm/mach-tegra/spl.c                     |   2 +-
> > >  arch/mips/lib/spl.c                           |   2 +-
> > >  arch/riscv/lib/spl.c                          |   2 +-
> > >  arch/sandbox/cpu/spl.c                        |   4 +-
> > >  arch/x86/cpu/apollolake/acpi.c                |   2 +-
> > >  arch/x86/cpu/intel_common/acpi.c              |   2 +-
> > >  .../include/asm/arch-apollolake/global_nvs.h  |   2 +-
> > >  arch/x86/lib/spl.c                            |   2 +-
> > >  arch/x86/lib/tpl.c                            |   2 +-
> > >  board/emulation/common/Kconfig                |  12 +
> > >  board/emulation/qemu-arm/Kconfig              |  29 +-
> > >  board/emulation/qemu-arm/MAINTAINERS          |   2 +
> > >  board/emulation/qemu-arm/Makefile             |   1 +
> > >  board/emulation/qemu-arm/qemu-arm.c           |   3 +
> > >  board/emulation/qemu-arm/spl.c                |  26 ++
> > >  board/freescale/common/fsl_chain_of_trust.c   |   2 +-
> > >  board/google/chromebook_coral/coral.c         |   2 +-
> > >  board/renesas/common/rcar64-spl.c             |   2 +-
> > >  board/sandbox/Makefile                        |   3 +-
> > >  board/sandbox/stdpass_check.c                 | 104 +++++
> > >  common/Kconfig                                |  58 ++-
> > >  common/bloblist.c                             | 108 ++---
> > >  common/board_f.c                              |  13 +-
> > >  common/spl/spl.c                              | 112 +++--
> > >  configs/qemu_arm64_spl_defconfig              |  95 +++++
> > >  configs/qemu_arm_spl_defconfig                |  88 ++++
> > >  configs/vexpress_fvp_bloblist_defconfig       |   2 +-
> > >  doc/board/armltd/vexpress64.rst               |   2 +-
> > >  doc/board/emulation/qemu-arm.rst              |  84 ++++
> > >  doc/develop/bloblist.rst                      |   4 +-
> > >  doc/develop/devicetree/dt_qemu.rst            |   8 +
> > >  doc/develop/index.rst                         |   1 +
> > >  doc/develop/std_passage.rst                   | 384 +++++++++++++++++
> > >  drivers/usb/gadget/f_sdp.c                    |   2 +-
> > >  dts/Kconfig                                   |  17 +-
> > >  include/asm-generic/global_data.h             |  37 ++
> > >  include/bloblist.h                            |  26 +-
> > >  include/fdtdec.h                              |   4 +-
> > >  include/handoff.h                             |  10 +-
> > >  .../x86/include/asm => include}/intel_gnvs.h  |   0
> > >  include/passage.h                             |  53 +++
> > >  include/spl.h                                 |   4 +-
> > >  include/stdpass/README                        |   4 +
> > >  include/stdpass/tpm2_eventlog.h               |  42 ++
> > >  include/stdpass/vboot_ctx.h                   | 267 ++++++++++++
> > >  lib/asm-offsets.c                             |   8 +
> > >  lib/fdtdec.c                                  |  42 +-
> > >  scripts/Makefile.xpl                          |   2 +-
> > >  scripts/build-qemu.sh                         | 226 ++++++++++
> > >  test/py/tests/test_passage.py                 |  13 +
> > >  72 files changed, 2618 insertions(+), 258 deletions(-)
> > >  create mode 100644 arch/arm/dts/qemu-arm-u-boot.dtsi
> > >  create mode 100644 arch/arm/dts/qemu-arm64-u-boot.dtsi
> > >  delete mode 100644 arch/arm/lib/xferlist.c
> > >  delete mode 100644 arch/arm/lib/xferlist.h
> > >  create mode 100644 board/emulation/qemu-arm/spl.c
> > >  create mode 100644 board/sandbox/stdpass_check.c
> > >  create mode 100644 configs/qemu_arm64_spl_defconfig
> > >  create mode 100644 configs/qemu_arm_spl_defconfig
> > >  create mode 100644 doc/develop/std_passage.rst
> > >  rename {arch/x86/include/asm => include}/intel_gnvs.h (100%)
> > >  create mode 100644 include/passage.h
> > >  create mode 100644 include/stdpass/README
> > >  create mode 100644 include/stdpass/tpm2_eventlog.h
> > >  create mode 100644 include/stdpass/vboot_ctx.h
> > >  create mode 100755 scripts/build-qemu.sh
> > >  create mode 100644 test/py/tests/test_passage.py
> > >
> > > --
> > > 2.43.0
> > >
> > > base-commit: 278be62c052f3a5749c3c7a57bcd307b82dcdc2d
> > > branch: pass3

Reply via email to