platform/kernel/u-boot.git
10 months agoconfigs: Resync with savedefconfig
Tom Rini [Tue, 25 Jul 2023 21:00:57 +0000 (17:00 -0400)]
configs: Resync with savedefconfig

Rsync all defconfig files using moveconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
10 months agoMerge branch '2023-07-25-assorted-general-updates'
Tom Rini [Tue, 25 Jul 2023 20:55:59 +0000 (16:55 -0400)]
Merge branch '2023-07-25-assorted-general-updates'

- A number of MAINTAINER file updates, assorted driver/platform fixes,
  performance improvements for sparse file writes, and 64bit time_t.

10 months agoMAINTAINERS: Take maintainership of TI KeyStone2 support
Andrew Davis [Tue, 25 Jul 2023 15:28:50 +0000 (10:28 -0500)]
MAINTAINERS: Take maintainership of TI KeyStone2 support

Add arch/arm/mach-keystone/ into K2 board directory MAINTAINERS file.

Convert current entries into regex match style.

Assign maintainership to myself.

Signed-off-by: Andrew Davis <afd@ti.com>
10 months agoMakefile: Use sort shortopts
Marek Vasut [Thu, 20 Jul 2023 12:50:42 +0000 (14:50 +0200)]
Makefile: Use sort shortopts

POSIX does not defined longopts for sort, use shortops
for even more compatibility.

Fixes: cc5a490cf465 ("Makefile: Sort u-boot-initial-env output")
Reported-by: Milan P. Stanić <mps@arvanta.net>
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
Tested-by: Milan P. Stanić <mps@arvanta.net>
10 months agoMAINTAINERS: Add some missing directories or files
Tom Rini [Tue, 18 Jul 2023 23:33:34 +0000 (19:33 -0400)]
MAINTAINERS: Add some missing directories or files

In a few cases we have MAINTAINERS entries that are missing obvious
paths or files. Typically this means a board directory that did not list
itself, but in a few cases we have a Kconfig file or similar.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Deal with '+' in paths
Tom Rini [Tue, 18 Jul 2023 23:33:33 +0000 (19:33 -0400)]
MAINTAINERS: Deal with '+' in paths

The listed paths are allowed to contain wildcards.  This includes the
'+' character which we have as a literal part of the path in a few
cases. Escape the '+' here so that files are matched.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Fix path typos and similar
Tom Rini [Tue, 18 Jul 2023 23:33:32 +0000 (19:33 -0400)]
MAINTAINERS: Fix path typos and similar

We have a number of cases where the in-tree path of files and where
they presumably were when the first version of a patch were posted
differ slightly.  Correct these to point at where the files are now.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Add a number of "common" directories
Tom Rini [Tue, 18 Jul 2023 23:33:31 +0000 (19:33 -0400)]
MAINTAINERS: Add a number of "common" directories

A number of platforms have "common" directories that are in turn not
listed by the board MAINTAINERS file.  Add these directories in many
cases.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoxes: Remove leftover code
Tom Rini [Tue, 18 Jul 2023 23:33:30 +0000 (19:33 -0400)]
xes: Remove leftover code

The platforms here have been removed, but the common code directory was
forgotten.  Clean up.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoarm: Remove leftover MAINTAINERS files
Tom Rini [Tue, 18 Jul 2023 23:33:29 +0000 (19:33 -0400)]
arm: Remove leftover MAINTAINERS files

These platforms have been removed, but the MAINTAINERS file was missed,
clean up.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoarm: Remove more remnants of bcmcygnus
Tom Rini [Tue, 18 Jul 2023 23:33:28 +0000 (19:33 -0400)]
arm: Remove more remnants of bcmcygnus

Remove some leftover files from the bcmcygnus platform.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Re-order CAAM section
Tom Rini [Tue, 18 Jul 2023 16:20:28 +0000 (12:20 -0400)]
MAINTAINERS: Re-order CAAM section

This file is in alphabetical order, move CAAM up to where it should be.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agosunxi: Add MAINTAINERS entry for Lctech Pi F1C200s
Tom Rini [Tue, 18 Jul 2023 16:20:27 +0000 (12:20 -0400)]
sunxi: Add MAINTAINERS entry for Lctech Pi F1C200s

This defconfig was added without a MAINTAINERS entry, add one.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agorockchip: Add MAINTAINERS entry for Radxa Rock 4C+
Tom Rini [Tue, 18 Jul 2023 16:20:26 +0000 (12:20 -0400)]
rockchip: Add MAINTAINERS entry for Radxa Rock 4C+

This defconfig was added without a MAINTAINERS entry, add one.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Add some missing defconfig files to existing entries
Tom Rini [Tue, 18 Jul 2023 16:20:25 +0000 (12:20 -0400)]
MAINTAINERS: Add some missing defconfig files to existing entries

We have a few places where defconfigs were added (or renamed) and not
included in their previously listed MAINTAINERS entry, correct this.

Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Adam Ford <aford173@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agoMAINTAINERS: Correct minor mistakes on some file listings
Tom Rini [Tue, 18 Jul 2023 16:20:24 +0000 (12:20 -0400)]
MAINTAINERS: Correct minor mistakes on some file listings

There are a few entries where minor mistakes mean that we don't match up
with obviously expected files, correct those.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months agopart: eliminate part_get_info_by_name_type()
Heinrich Schuchardt [Sun, 16 Jul 2023 11:34:44 +0000 (13:34 +0200)]
part: eliminate part_get_info_by_name_type()

Since commit 56670d6fb83f ("disk: part: use common api to lookup part
driver") part_get_info_by_name_type() ignores the part_type parameter
used to restrict the partition table type.

omap_mmc_get_part_size() and part_get_info_by_name() are the only
consumers.

omap_mmc_get_part_size() calls with part_type = PART_TYPE_EFI because at
the time of implementation a speed up could be gained by passing the
partition table type. After 5 years experience without this restriction
it looks safe to keep it that way.

part_get_info_by_name() uses PART_TYPE_ALL.

Move the logic of part_get_info_by_name_type() to part_get_info_by_name()
and replace the function in omap_mmc_get_part_size().

Fixes: 56670d6fb83f ("disk: part: use common api to lookup part driver")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
10 months ago.mailmap: Correct entries for Masahiro Yamada
Tom Rini [Sat, 15 Jul 2023 15:02:24 +0000 (11:02 -0400)]
.mailmap: Correct entries for Masahiro Yamada

His entries had the correct email address listed last rather than first,
correct this.

Fixes: 4fa4227cdd14 (".mailmap: Record all address for main U-Boot contributor")
Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Michal Simek <michal.simek@amd.com>
10 months agocommon: define time_t as 64bit
Heinrich Schuchardt [Sat, 15 Jul 2023 07:16:59 +0000 (09:16 +0200)]
common: define time_t as 64bit

To avoid the year 2038 problem time_t must be 64bit on all architectures.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
10 months agofwu: Show number of attempts in Trial State
Michal Simek [Fri, 14 Jul 2023 08:47:06 +0000 (10:47 +0200)]
fwu: Show number of attempts in Trial State

It is not visible anywhere in Trial State if this is the first, second, etc
attempt that's why show a message to be aware about status.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
10 months agofwu: mtd: Fix dfu_alt_info generation for 2 images per bank
Michal Simek [Thu, 13 Jul 2023 14:36:27 +0000 (16:36 +0200)]
fwu: mtd: Fix dfu_alt_info generation for 2 images per bank

Code rewrites the last char of size with adding &. It is visible from
dfu_alt_info print before this patch:

Make dfu_alt_info: 'mtd nor0=bank0 raw 2320000 80000;bank1 raw 27a0000
8000&mtd nor0=bank0 raw 23a0000 4000000;bank1 raw 2820000 4000000'

And after it:
Make dfu_alt_info: 'mtd nor0=bank0 raw 2320000 80000;bank1 raw 27a0000
80000&mtd nor0=bank0 raw 23a0000 4000000;bank1 raw 2820000 4000000'

Size for bank0 and bank1 must be the same because it is the same image.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
10 months agofwu: Allow code to properly decode trial state
Michal Simek [Thu, 13 Jul 2023 14:35:24 +0000 (16:35 +0200)]
fwu: Allow code to properly decode trial state

Current code after capsule update (mtd write) is not changing active_index
in mdata to previous_active_index.
On the reboot this is shown but showing message
"Boot idx 1 is not matching active idx 0, changing active_idx"
which is changing active_idx and writing mdata to flash.

But when this message is visible it is not checking which state that images
are. If they have acceptance bit setup to yes everything is fine and valid
images are booted (doesn't mean the latest one).
But if acceptance bit is no and images are in trial state in_trial variable
is never setup. Which means that from new flashed image stable image can be
rewritten because in_trial is not setup properly.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
10 months agodrivers: rtc: max313xx: provide read8/write8
Chris Packham [Tue, 11 Jul 2023 23:30:44 +0000 (11:30 +1200)]
drivers: rtc: max313xx: provide read8/write8

In some designs the MAX313xx RTC may need calibration to cope with
oscillator inaccuracies. Provide read8/write8 ops so that the registers
can be accessed. Because the driver covers a range of MAX313xx variants
no attempt is made to ensure the register is valid.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
10 months agolib: sparse: allocate FASTBOOT_MAX_BLK_WRITE instead of small number
Mattijs Korpershoek [Fri, 7 Jul 2023 08:13:34 +0000 (10:13 +0200)]
lib: sparse: allocate FASTBOOT_MAX_BLK_WRITE instead of small number

Commit 62649165cb02 ("lib: sparse: Make CHUNK_TYPE_RAW buffer aligned")
fixed cache alignment for systems with a D-CACHE.

However it introduced some performance regressions [1] on system
flashing huge images, such as Android.

On AM62x SK EVM, we also observe such performance penalty:
Sending sparse 'super' 1/2 (768793 KB)             OKAY [ 23.954s]
Writing 'super'                                    OKAY [ 75.926s]
Sending sparse 'super' 2/2 (629819 KB)             OKAY [ 19.641s]
Writing 'super'                                    OKAY [ 62.849s]
Finished. Total time: 182.474s

The reason for this is that we use an arbitrary small buffer
(info->blksz * 100) for transferring.

Fix it by using a bigger buffer (info->blksz * FASTBOOT_MAX_BLK_WRITE)
as suggested in the original's patch review [2].

With this patch, performance impact is mitigated:
Sending sparse 'super' 1/2 (768793 KB)             OKAY [ 23.912s]
Writing 'super'                                    OKAY [ 15.780s]
Sending sparse 'super' 2/2 (629819 KB)             OKAY [ 19.581s]
Writing 'super'                                    OKAY [ 17.192s]
Finished. Total time: 76.569s

[1] https://lore.kernel.org/r/20221118121323.4009193-1-gary.bisson@boundarydevices.com
[2] https://lore.kernel.org/r/all/43e4c17c-4483-ec8e-f843-9b4c5569bd18@seco.com/

Fixes: 62649165cb02 ("lib: sparse: Make CHUNK_TYPE_RAW buffer aligned")
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
10 months agodrivers: led: bcm6858: do not use null label to find the top
Philippe Reynes [Fri, 23 Jun 2023 16:36:42 +0000 (18:36 +0200)]
drivers: led: bcm6858: do not use null label to find the top

This driver considers that a node with an empty label is the top.
But the led class has changed, if a label is not provided for a led,
the label is filed with the node name. So we update this driver
to use a wrapper to manage the top led node.

Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
10 months agomailbox: k3-sec-proxy: Fill non-message tx data fields with 0x0
Nishanth Menon [Tue, 20 Jun 2023 18:17:09 +0000 (13:17 -0500)]
mailbox: k3-sec-proxy: Fill non-message tx data fields with 0x0

Sec proxy data buffer is 60 bytes with the last of the registers
indicating transmission completion. This however poses a bit of a
challenge.

The backing memory for sec_proxy is regular memory, and all sec proxy
does is to trigger a burst of all 60 bytes of data over to the target
thread backing ring accelerator. It doesn't do a memory scrub when
it moves data out in the burst. When we transmit multiple messages,
remnants of previous message is also transmitted which results in
some random data being set in TISCI fields of messages that have been
expanded forward.

The entire concept of backward compatibility hinges on the fact that
the unused message fields remain 0x0 allowing for 0x0 value to be
specially considered when backward compatibility of message extension
is done.

So, instead of just writing the completion register, we continue
to fill the message buffer up with 0x0 (note: for partial message
involving completion, we already do this).

This allows us to scale and introduce ABI changes back also work with
other boot stages that may have left data in the internal memory.

While at this, drop the unused accessor function.

Fixes: f9aa41023bd9 ("mailbox: Introduce K3 Secure Proxy Driver")
Signed-off-by: Nishanth Menon <nm@ti.com>
10 months agobuildman: Specify the output directory in tests
Simon Glass [Tue, 25 Jul 2023 14:13:22 +0000 (08:13 -0600)]
buildman: Specify the output directory in tests

The default output directory is generally '../' in tests so we end up
trying to create '../.bm-work'. This does not work with azure, so update
these tests to use the temporary directory instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agoRevert "Merge branch '2023-07-24-introduce-FF-A-suppport'"
Tom Rini [Mon, 24 Jul 2023 23:51:05 +0000 (19:51 -0400)]
Revert "Merge branch '2023-07-24-introduce-FF-A-suppport'"

This reverts commit d927d1a80843e1c3e2a3f0b8f6150790bef83da1, reversing
changes made to c07ad9520c6190070513016fdb495d4703a4a853.

These changes do not pass CI currently.

Signed-off-by: Tom Rini <trini@konsulko.com>
10 months agoMerge branch '2023-07-24-introduce-FF-A-suppport'
Tom Rini [Mon, 24 Jul 2023 22:58:22 +0000 (18:58 -0400)]
Merge branch '2023-07-24-introduce-FF-A-suppport'

To quote the author:
Adding support for Arm FF-A v1.0 (Arm Firmware Framework for Armv8-A) [A].

FF-A specifies interfaces that enable a pair of software execution
environments aka partitions to communicate with each other. A partition
could be a VM in the Normal or Secure world, an application in S-EL0, or
a Trusted OS in S-EL1.

FF-A is a discoverable bus and similar to architecture features.
FF-A bus is discovered using ARM_SMCCC_FEATURES mechanism performed
by the PSCI driver.

   => dm tree

    Class     Index  Probed  Driver                Name
   -----------------------------------------------------------
   ...
    firmware      0  [ + ]   psci                      |-- psci
    ffa                   0  [   ]   arm_ffa               |   `-- arm_ffa
   ...

Clients are able to probe then use the FF-A bus by calling the DM class
searching APIs (e.g: uclass_first_device).

This implementation of the specification provides support for Aarch64.

The FF-A driver uses the SMC ABIs defined by the FF-A specification to:

    - Discover the presence of secure partitions (SPs) of interest
    - Access an SP's service through communication protocols
      (e.g: EFI MM communication protocol)

The FF-A support provides the following features:

    - Being generic by design and can be used by any Arm 64-bit platform
    - FF-A support can be compiled and used without EFI
    - Support for SMCCCv1.2 x0-x17 registers
    - Support for SMC32 calling convention
    - Support for 32-bit and 64-bit FF-A direct messaging
    - Support for FF-A MM communication (compatible with EFI boot time)
    - Enabling FF-A and MM communication in Corstone1000 platform as a use case
    - A Uclass driver providing generic FF-A methods.
    - An Arm FF-A device driver providing Arm-specific methods and
      reusing the Uclass methods.
    - A sandbox emulator for Arm FF-A, emulates the FF-A side of the
      Secure World and provides FF-A ABIs inspection methods.
    - An FF-A sandbox device driver for FF-A communication with the
      emulated Secure World.  The driver leverages the FF-A Uclass to
      establish FF-A communication.
    - Sandbox FF-A test cases.
    - A new command called armffa is provided as an example of how to
      access the FF-A bus

For more details about the FF-A support please refer to [B] and refer to [C] for
how to use the armffa command.

Please find at [D] an example of the expected boot logs when enabling
FF-A support for a platform. In this example the platform is
Corstone1000. But it can be any Arm 64-bit platform.

[A]: https://developer.arm.com/documentation/den0077/latest/
[B]: doc/arch/arm64.ffa.rst
[C]: doc/usage/cmd/armffa.rst
[D]: example of boot logs when enabling FF-A

10 months agoarm_ffa: efi: corstone1000: enable MM communication
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:47 +0000 (14:28 +0100)]
arm_ffa: efi: corstone1000: enable MM communication

turn on EFI MM communication

On corstone1000 platform MM communication between u-boot
and the secure world (Optee) is done using the FF-A bus.

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
10 months agoarm_ffa: efi: introduce FF-A MM communication
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:46 +0000 (14:28 +0100)]
arm_ffa: efi: introduce FF-A MM communication

Add MM communication support using FF-A transport

This feature allows accessing MM partitions services through
EFI MM communication protocol. MM partitions such as StandAlonneMM
or smm-gateway secure partitions which reside in secure world.

An MM shared buffer and a door bell event are used to exchange
the data.

The data is used by EFI services such as GetVariable()/SetVariable()
and copied from the communication buffer to the MM shared buffer.

The secure partition is notified about availability of data in the
MM shared buffer by an FF-A message (door bell).

On such event, MM SP can read the data and updates the MM shared
buffer with the response data.

The response data is copied back to the communication buffer and
consumed by the EFI subsystem.

MM communication protocol supports FF-A 64-bit direct messaging.

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Tested-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
10 months agoarm_ffa: introduce armffa command Sandbox test
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:45 +0000 (14:28 +0100)]
arm_ffa: introduce armffa command Sandbox test

Add Sandbox test for the armffa command

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
10 months agoarm_ffa: introduce sandbox test cases for UCLASS_FFA
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:44 +0000 (14:28 +0100)]
arm_ffa: introduce sandbox test cases for UCLASS_FFA

Add functional test cases for the FF-A support

These tests rely on the FF-A sandbox emulator and FF-A
sandbox driver which help in inspecting the FF-A communication.

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
10 months agoarm_ffa: introduce sandbox FF-A support
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:43 +0000 (14:28 +0100)]
arm_ffa: introduce sandbox FF-A support

Emulate Secure World's FF-A ABIs and allow testing U-Boot FF-A support

Features of the sandbox FF-A support:

- Introduce an FF-A emulator
- Introduce an FF-A device driver for FF-A comms with emulated Secure World
- Provides test methods allowing to read the status of the inspected ABIs

The sandbox FF-A emulator supports only 64-bit direct messaging.

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
10 months agoarm_ffa: introduce armffa command
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:42 +0000 (14:28 +0100)]
arm_ffa: introduce armffa command

Provide armffa command showcasing the use of the U-Boot FF-A support

armffa is a command showcasing how to invoke FF-A operations.
This provides a guidance to the client developers on how to
call the FF-A bus interfaces. The command also allows to gather secure
partitions information and ping these  partitions. The command is also
helpful in testing the communication with secure partitions.

For more details please refer to the command documentation [1].

[1]: doc/usage/cmd/armffa.rst

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
10 months agoarm_ffa: introduce Arm FF-A support
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:41 +0000 (14:28 +0100)]
arm_ffa: introduce Arm FF-A support

Add Arm FF-A support implementing Arm Firmware Framework for Armv8-A v1.0

The Firmware Framework for Arm A-profile processors (FF-A v1.0) [1]
describes interfaces (ABIs) that standardize communication
between the Secure World and Normal World leveraging TrustZone
technology.

This driver uses 64-bit registers as per SMCCCv1.2 spec and comes
on top of the SMCCC layer. The driver provides the FF-A ABIs needed for
querying the FF-A framework from the secure world.

The driver uses SMC32 calling convention which means using the first
32-bit data of the Xn registers.

All supported ABIs come with their 32-bit version except FFA_RXTX_MAP
which has 64-bit version supported.

Both 32-bit and 64-bit direct messaging are supported which allows both
32-bit and 64-bit clients to use the FF-A bus.

FF-A is a discoverable bus and similar to architecture features.
FF-A bus is discovered using ARM_SMCCC_FEATURES mechanism performed
by the PSCI driver.

Clients are able to probe then use the FF-A bus by calling the DM class
searching APIs (e.g: uclass_first_device).

The Secure World is considered as one entity to communicate with
using the FF-A bus. FF-A communication is handled by one device and
one instance (the bus). This FF-A driver takes care of all the
interactions between Normal world and Secure World.

The driver exports its operations to be used by upper layers.

Exported operations:

- ffa_partition_info_get
- ffa_sync_send_receive
- ffa_rxtx_unmap

Generic FF-A methods are implemented in the Uclass (arm-ffa-uclass.c).
Arm specific methods are implemented in the Arm driver (arm-ffa.c).

For more details please refer to the driver documentation [2].

[1]: https://developer.arm.com/documentation/den0077/latest/
[2]: doc/arch/arm64.ffa.rst

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
10 months agolib: uuid: introduce testcase for uuid_str_to_le_bin
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:40 +0000 (14:28 +0100)]
lib: uuid: introduce testcase for uuid_str_to_le_bin

provide a test case

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
10 months agolib: uuid: introduce uuid_str_to_le_bin function
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:39 +0000 (14:28 +0100)]
lib: uuid: introduce uuid_str_to_le_bin function

convert UUID string to little endian binary data

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
10 months agoarm64: smccc: add support for SMCCCv1.2 x0-x17 registers
Abdellatif El Khlifi [Thu, 13 Jul 2023 13:28:38 +0000 (14:28 +0100)]
arm64: smccc: add support for SMCCCv1.2 x0-x17 registers

add support for x0-x17 registers used by the SMC calls

In SMCCC v1.2 [1] arguments are passed in registers x1-x17.
Results are returned in x0-x17.

This work is inspired from the following kernel commit:

arm64: smccc: Add support for SMCCCv1.2 extended input/output registers

[1]: https://documentation-service.arm.com/static/5f8edaeff86e16515cdbe4c6?token=

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
10 months agoMerge tag 'dm-pull-24jul23' of https://source.denx.de/u-boot/custodians/u-boot-dm
Tom Rini [Mon, 24 Jul 2023 18:55:56 +0000 (14:55 -0400)]
Merge tag 'dm-pull-24jul23' of https://source.denx.de/u-boot/custodians/u-boot-dm

buildman refactoring and --maintainer-check
binman TI support
binman cipher support

10 months agoMerge branch '2023-07-22-TI-K3-improvements'
Tom Rini [Mon, 24 Jul 2023 17:55:59 +0000 (13:55 -0400)]
Merge branch '2023-07-22-TI-K3-improvements'

- Actually merge the assorted K3 platform improvements that were
  supposed to be in commit 247aa5a19115 ("Merge branch
  '2023-07-21-assorted-TI-platform-updates'")

10 months agobuildman: Enable test coverage
Simon Glass [Wed, 19 Jul 2023 23:49:31 +0000 (17:49 -0600)]
buildman: Enable test coverage

Enable measuring test coverage for buildman so we can see the gaps. It is
currently at 68%.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Add an option to check maintainers and targets
Simon Glass [Wed, 19 Jul 2023 23:49:30 +0000 (17:49 -0600)]
buildman: Add an option to check maintainers and targets

In poking around it seems that many boards don't define a CONFIG_TARGET
Kconfig variable. This is not strictly necessary, but add an option to
buildman so these can be viewed.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Use -D for --debug
Simon Glass [Wed, 19 Jul 2023 23:49:29 +0000 (17:49 -0600)]
buildman: Use -D for --debug

Change -D to mean --debug for consistency with other tools. This is not a
commonly used option, so the impact should be minimal.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Add a way to print the architecture for a board
Simon Glass [Wed, 19 Jul 2023 23:49:28 +0000 (17:49 -0600)]
buildman: Add a way to print the architecture for a board

This is useful for some tools and is easily available for buildman. Add
a new --print-arch option.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move copy_files() out ot BuilderThread class
Simon Glass [Wed, 19 Jul 2023 23:49:27 +0000 (17:49 -0600)]
buildman: Move copy_files() out ot BuilderThread class

This does not need to be in the class. Move it out to avoid a pylint
warning.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Tidy up some comments in builderthread
Simon Glass [Wed, 19 Jul 2023 23:49:26 +0000 (17:49 -0600)]
buildman: Tidy up some comments in builderthread

Make sure all functions have full argument documentation.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Tidy up reporting of a toolchain error
Simon Glass [Wed, 19 Jul 2023 23:49:25 +0000 (17:49 -0600)]
buildman: Tidy up reporting of a toolchain error

Provide the text of the exception when something goes wrong.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Avoid passing result into _read_done_file()
Simon Glass [Wed, 19 Jul 2023 23:49:24 +0000 (17:49 -0600)]
buildman: Avoid passing result into _read_done_file()

Move the creating of the result object into the function which sets it
up, to simplify the code.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Create a function to handle config and build
Simon Glass [Wed, 19 Jul 2023 23:49:23 +0000 (17:49 -0600)]
buildman: Create a function to handle config and build

Move this code into a _config_and_build() function, so reduce the size of
run_commit().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move checkout code to a separate function
Simon Glass [Wed, 19 Jul 2023 23:49:22 +0000 (17:49 -0600)]
buildman: Move checkout code to a separate function

Put this in its own function to reduce the size of the run_commit()
function

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move code to decide output dirs
Simon Glass [Wed, 19 Jul 2023 23:49:21 +0000 (17:49 -0600)]
buildman: Move code to decide output dirs

Put this in its own function to reduce the size of the run_commit()
function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move code to remove old outputs
Simon Glass [Wed, 19 Jul 2023 23:49:20 +0000 (17:49 -0600)]
buildman: Move code to remove old outputs

Put this in its own function to reduce the size of the run_commit()
function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move reading of the done file into a function
Simon Glass [Wed, 19 Jul 2023 23:49:19 +0000 (17:49 -0600)]
buildman: Move reading of the done file into a function

Move this logic into its own function to reduce the size of the
run_commt() function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move bulid code into its own function
Simon Glass [Wed, 19 Jul 2023 23:49:18 +0000 (17:49 -0600)]
buildman: Move bulid code into its own function

Split this into its own function so reduce the size of run_commit().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move reconfigure code into its own function
Simon Glass [Wed, 19 Jul 2023 23:49:17 +0000 (17:49 -0600)]
buildman: Move reconfigure code into its own function

Split this into its own function so reduce the size of run_commit().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert config_out to string IO
Simon Glass [Wed, 19 Jul 2023 23:49:16 +0000 (17:49 -0600)]
buildman: Convert config_out to string IO

This is probably a little more efficient and it allows passing the object
to another function to write data. Convert config_out to use a string I/O
device.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move more things into _build_args()
Simon Glass [Wed, 19 Jul 2023 23:49:15 +0000 (17:49 -0600)]
buildman: Move more things into _build_args()

Move more of the argument-building code into this function. Fix a missing
assignment for out_rel_dir too.

Rename the function since it now builds all the arguments.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move setting of toolchain arguments to _build_args()
Simon Glass [Wed, 19 Jul 2023 23:49:14 +0000 (17:49 -0600)]
buildman: Move setting of toolchain arguments to _build_args()

Move a few more pieces to this new function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Start a function to set up the make arguments
Simon Glass [Wed, 19 Jul 2023 23:49:13 +0000 (17:49 -0600)]
buildman: Start a function to set up the make arguments

Move some of this code into a new funciion, to help reduce the size of the
run_commits() function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Drop unnecessary assignment of config_out
Simon Glass [Wed, 19 Jul 2023 23:49:12 +0000 (17:49 -0600)]
buildman: Drop unnecessary assignment of config_out

This is already set up earlier in the function, so drop the extra
assignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Correct invalid use of out_dir variable
Simon Glass [Wed, 19 Jul 2023 23:49:11 +0000 (17:49 -0600)]
buildman: Correct invalid use of out_dir variable

This variable has a different meaning in the outer scope. Use a different
name to avoid confusion, or bugs.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Export _get_output_dir() to avoid warnings
Simon Glass [Wed, 19 Jul 2023 23:49:10 +0000 (17:49 -0600)]
buildman: Export _get_output_dir() to avoid warnings

Make this a public memory since it is used outside the class.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Correct most pylint warnings in builderthread
Simon Glass [Wed, 19 Jul 2023 23:49:09 +0000 (17:49 -0600)]
buildman: Correct most pylint warnings in builderthread

Fix the easy warnings in this file.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert camel case in builderthread.py
Simon Glass [Wed, 19 Jul 2023 23:49:08 +0000 (17:49 -0600)]
buildman: Convert camel case in builderthread.py

Convert this file to snake case and update all files which use it.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Split parser creation in two
Simon Glass [Wed, 19 Jul 2023 23:49:07 +0000 (17:49 -0600)]
buildman: Split parser creation in two

Split this into two functions to avoid a warning about too many
statements.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert camel case in builder.py
Simon Glass [Wed, 19 Jul 2023 23:49:06 +0000 (17:49 -0600)]
buildman: Convert camel case in builder.py

Convert this file to snake case and update all files which use it.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert camel case in bsettings.py
Simon Glass [Wed, 19 Jul 2023 23:49:05 +0000 (17:49 -0600)]
buildman: Convert camel case in bsettings.py

Convert this file to snake case and update all files which use it.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert to argparse
Simon Glass [Wed, 19 Jul 2023 23:49:04 +0000 (17:49 -0600)]
buildman: Convert to argparse

Use argparse to parse the arguments, since OptionParser is deprecated now.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Add a test for --boards
Simon Glass [Wed, 19 Jul 2023 23:49:03 +0000 (17:49 -0600)]
buildman: Add a test for --boards

Add a simple functional test for the --boards option. Fix the example in
the docs while we are here. Also improve the docs for Builder.count so it
is clearer what it contains.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Correct most pylint warnings in cmdline
Simon Glass [Wed, 19 Jul 2023 23:49:02 +0000 (17:49 -0600)]
buildman: Correct most pylint warnings in cmdline

Tidu up warnings in this file.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Convert camel case in cmdline.py
Simon Glass [Wed, 19 Jul 2023 23:49:01 +0000 (17:49 -0600)]
buildman: Convert camel case in cmdline.py

Convert this file to snake case and update all files which use it.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Create a function to get number of built commits
Simon Glass [Wed, 19 Jul 2023 23:49:00 +0000 (17:49 -0600)]
buildman: Create a function to get number of built commits

Move this code into a function. This removes the last pylint error in
the control module.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Use get_alow_missing() directly to avoid var
Simon Glass [Wed, 19 Jul 2023 23:48:59 +0000 (17:48 -0600)]
buildman: Use get_alow_missing() directly to avoid var

Avoid an unnecessary local variable by moving this code to a function.
This fixes the pylint warning about too many local variables.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move getting the adjust_cfg into run_builder()
Simon Glass [Wed, 19 Jul 2023 23:48:58 +0000 (17:48 -0600)]
buildman: Move getting the adjust_cfg into run_builder()

Move this into its own function to reduce the size of do_buildman().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move checking for make into run_builder()
Simon Glass [Wed, 19 Jul 2023 23:48:57 +0000 (17:48 -0600)]
buildman: Move checking for make into run_builder()

This is not needed until the builder is run. Move it there to reduce the
size of the do_buildman() function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Adjust show_toolchain_prefix() to not return
Simon Glass [Wed, 19 Jul 2023 23:48:56 +0000 (17:48 -0600)]
buildman: Adjust show_toolchain_prefix() to not return

This function does not need to return. Simplify the code by exiting
immediately.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Drop some unnecessary variables
Simon Glass [Wed, 19 Jul 2023 23:48:55 +0000 (17:48 -0600)]
buildman: Drop some unnecessary variables

Drop some variables at the end of the do_bulidman() function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Moving running of the builder into a function
Simon Glass [Wed, 19 Jul 2023 23:48:54 +0000 (17:48 -0600)]
buildman: Moving running of the builder into a function

Move this code into a new function. This removes the pylint warning about
too many branches.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Tweak commits and show_bloat
Simon Glass [Wed, 19 Jul 2023 23:48:53 +0000 (17:48 -0600)]
buildman: Tweak commits and show_bloat

Move setting of show_bloat to adjust_options() and adjust how the commits
variable is set. Together these remove the pylint warning about too many
statements.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move remaining builder properties to constructor
Simon Glass [Wed, 19 Jul 2023 23:48:52 +0000 (17:48 -0600)]
buildman: Move remaining builder properties to constructor

Do these all in the constructor, so it is consistent.

Move the stray builder comment into the correct place.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Avoid too many returns in do_buildman()
Simon Glass [Wed, 19 Jul 2023 23:48:51 +0000 (17:48 -0600)]
buildman: Avoid too many returns in do_buildman()

Fix the pylint warning by using a variable instead of lots of 'return'
statements.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move commit numbering into determine_series()
Simon Glass [Wed, 19 Jul 2023 23:48:50 +0000 (17:48 -0600)]
buildman: Move commit numbering into determine_series()

Commits are numbered for use in tests. Do this in determine_series() since
it is already dealing with the series.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move setting up the output dir into a function
Simon Glass [Wed, 19 Jul 2023 23:48:49 +0000 (17:48 -0600)]
buildman: Move setting up the output dir into a function

Move this code into a separate function to reduce the size of the main
do_buildman() directory.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move counting of commits into a function
Simon Glass [Wed, 19 Jul 2023 23:48:48 +0000 (17:48 -0600)]
buildman: Move counting of commits into a function

Move this code into a separate function to avoid a pylint warning in
determine_series().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Build option-adjusting into a function
Simon Glass [Wed, 19 Jul 2023 23:48:47 +0000 (17:48 -0600)]
buildman: Build option-adjusting into a function

Create a separate function to adjust options. Also move show_actions() up
as far as we can in the function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Pass option values to show_actions()
Simon Glass [Wed, 19 Jul 2023 23:48:46 +0000 (17:48 -0600)]
buildman: Pass option values to show_actions()

Pass in the individual values rather than the whole options object, so we
can see what is needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Pass option values to get_action_summary()
Simon Glass [Wed, 19 Jul 2023 23:48:45 +0000 (17:48 -0600)]
buildman: Pass option values to get_action_summary()

Pass in the individual values rather than the whole options object, so we
can see what is needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move output-file setup into one place
Simon Glass [Wed, 19 Jul 2023 23:48:44 +0000 (17:48 -0600)]
buildman: Move output-file setup into one place

Collect the two parts of the output-file handling into single place.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobulldman: Set up output_dir earlier
Simon Glass [Wed, 19 Jul 2023 23:48:43 +0000 (17:48 -0600)]
bulldman: Set up output_dir earlier

Set up output_dir at the start of the main function, instead of updating
the options.output_dir option.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobulidman: Move toolchain handling to a function
Simon Glass [Wed, 19 Jul 2023 23:48:42 +0000 (17:48 -0600)]
bulidman: Move toolchain handling to a function

Move the code for dealing with toolchains out into its own function, to
reduce the size of the main function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move Boards-object code into a function
Simon Glass [Wed, 19 Jul 2023 23:48:41 +0000 (17:48 -0600)]
buildman: Move Boards-object code into a function

Move the code which obtains a Boards object into its own function, to
reduce the size of the main function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobulidman: Move more code to determine_series()
Simon Glass [Wed, 19 Jul 2023 23:48:40 +0000 (17:48 -0600)]
bulidman: Move more code to determine_series()

Move some more series-related code here, to reduce the size of the main
function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move board-selection code into a function
Simon Glass [Wed, 19 Jul 2023 23:48:39 +0000 (17:48 -0600)]
buildman: Move board-selection code into a function

Create a new determine_boards() function to hold the code which selects
which boards to build.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Add tests for excluding things
Simon Glass [Wed, 19 Jul 2023 23:48:38 +0000 (17:48 -0600)]
buildman: Add tests for excluding things

Add some tests for the -x flag.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move dry-run handling higher in do_buildman()
Simon Glass [Wed, 19 Jul 2023 23:48:37 +0000 (17:48 -0600)]
buildman: Move dry-run handling higher in do_buildman()

Move this up above where the builder is created, since it no-longer makes
use of the builder.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Drop use of builder in show_actions()
Simon Glass [Wed, 19 Jul 2023 23:48:36 +0000 (17:48 -0600)]
buildman: Drop use of builder in show_actions()

This function only needs the output directory from the builder. This is
passed into the builder, so just pass the same value to show_actions().
The avoids needing a builder to call show_actions().

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Add a test for the -A option
Simon Glass [Wed, 19 Jul 2023 23:48:35 +0000 (17:48 -0600)]
buildman: Add a test for the -A option

This lacks a test at present. Add one.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move fetch-arch code into a separate function
Simon Glass [Wed, 19 Jul 2023 23:48:34 +0000 (17:48 -0600)]
buildman: Move fetch-arch code into a separate function

Reduce the size of the do_buildman() function a little by moving the code
that handles --fetch-arch into a separate function.

Signed-off-by: Simon Glass <sjg@chromium.org>
10 months agobuildman: Move series calculations into a separate function
Simon Glass [Wed, 19 Jul 2023 23:48:33 +0000 (17:48 -0600)]
buildman: Move series calculations into a separate function

Reduce the size of the do_buildman() function a little by moving the code
that figures out the series into a separate function.

Signed-off-by: Simon Glass <sjg@chromium.org>