mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
The devm alloc functions that we have may follow the Linux kernel model
where allocations are (almost always) automatically free()'d. However,
quite often we don't enable, in full U-Boot, the tracking and free()'ing
functionality. This in turn leads to memory leaks because the driver
author expects that since the functions have the same name as in the
Linux Kernel they have the same behavior. In turn we then get
functionally correct commits such as commit 00e1fed93c8c ("firmware:
ti_sci: Fix memory leaks in devm_ti_sci_get_of_resource") that manually
add these calls. Rather than manually tracking allocations and
implementing free()s, rework things so that we follow expectations by
enabling the DEVRES functionality (outside of xPL phases).
This turns DEVRES from a prompted symbol to a symbol that must be
select'd, and we now remove our non-managed alloc/free functions from
outside of xPL builds.
Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
44 lines
1.7 KiB
Plaintext
44 lines
1.7 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
config ARM_FFA_TRANSPORT
|
|
bool "Enable Arm Firmware Framework for Armv8-A driver"
|
|
depends on DM && (ARM64 || SANDBOX)
|
|
select ARM_SMCCC if !SANDBOX
|
|
select ARM_SMCCC_FEATURES if !SANDBOX
|
|
imply CMD_ARMFFA
|
|
select DEVRES
|
|
select LIB_UUID
|
|
select DEVRES
|
|
help
|
|
The Firmware Framework for Arm A-profile processors (FF-A)
|
|
describes interfaces (ABIs) that standardize communication
|
|
between the Secure World and Normal World leveraging TrustZone
|
|
technology.
|
|
|
|
The FF-A support in U-Boot is based on FF-A specification v1.0 and uses SMC32
|
|
calling convention.
|
|
|
|
FF-A specification:
|
|
|
|
https://developer.arm.com/documentation/den0077/a/?lang=en
|
|
|
|
In U-Boot FF-A design, FF-A is considered as a discoverable bus.
|
|
FF-A bus is discovered using ARM_SMCCC_FEATURES mechanism performed
|
|
by the PSCI driver.
|
|
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).
|
|
The FF-A support on U-Boot takes care of all the interactions between Normal
|
|
world and Secure World.
|
|
|
|
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).
|
|
|
|
FF-A sandbox is provided to run FF-A under sandbox and allows to test the FF-A Uclass.
|
|
Sandbox support includes an emulator for Arm FF-A which emulates the FF-A side of
|
|
the Secure World and provides FF-A ABIs inspection methods (ffa-emul-uclass.c).
|
|
An FF-A sandbox driver is also provided for FF-A communication with the emulated
|
|
Secure World (sandbox_ffa.c).
|
|
|
|
For more details about the FF-A support, please refer to doc/arch/arm64.ffa.rst
|