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. We tested the FF-A MM communication on the Corstone-1000 platform. We ran the UEFI SCT test suite containing EFI setVariable, getVariable and getNextVariable tests which involve FF-A MM communication and all tests are passing with the current changes. We made the SCT test reports (part of the ACS results) public following the latest Corstone-1000 platform software release. Please find the test reports at [1]. [1]: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-test-report/-/tree/master/embedded-a/corstone1000/CORSTONE1000-2023.06/acs_results_fpga.zip 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> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
committed by
Tom Rini
parent
f16a48fec9
commit
218b062e8f
@@ -55,13 +55,50 @@ config EFI_VARIABLE_FILE_STORE
|
||||
stored as file /ubootefi.var on the EFI system partition.
|
||||
|
||||
config EFI_MM_COMM_TEE
|
||||
bool "UEFI variables storage service via OP-TEE"
|
||||
bool "UEFI variables storage service via the trusted world"
|
||||
depends on OPTEE
|
||||
help
|
||||
Allowing access to the MM SP services (SPs such as StandAlonneMM, smm-gateway).
|
||||
When using the u-boot OP-TEE driver, StandAlonneMM is supported.
|
||||
When using the u-boot FF-A driver any MM SP is supported.
|
||||
|
||||
If OP-TEE is present and running StandAloneMM, dispatch all UEFI
|
||||
variable related operations to that. The application will verify,
|
||||
authenticate and store the variables on an RPMB.
|
||||
|
||||
When ARM_FFA_TRANSPORT is used, dispatch all UEFI variable related
|
||||
operations to the MM SP running in the secure world.
|
||||
A door bell mechanism is used to notify the SP when there is data in the shared
|
||||
MM buffer. The data is copied by u-boot to the shared buffer before issuing
|
||||
the door bell event.
|
||||
|
||||
config FFA_SHARED_MM_BUF_SIZE
|
||||
int "Memory size of the shared MM communication buffer"
|
||||
depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
|
||||
help
|
||||
This defines the size in bytes of the memory area reserved for the shared
|
||||
buffer used for communication between the MM feature in U-Boot and
|
||||
the MM SP in secure world.
|
||||
The size of the memory region must be a multiple of the size of the maximum
|
||||
translation granule size that is specified in the ID_AA64MMFR0_EL1 System register.
|
||||
It is assumed that the MM SP knows the size of the shared MM communication buffer.
|
||||
|
||||
config FFA_SHARED_MM_BUF_OFFSET
|
||||
int "Data offset in the shared MM communication buffer"
|
||||
depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
|
||||
help
|
||||
This defines the offset in bytes of the data read or written to in the shared
|
||||
buffer by the MM SP.
|
||||
|
||||
config FFA_SHARED_MM_BUF_ADDR
|
||||
hex "Define the address of the shared MM communication buffer"
|
||||
depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
|
||||
help
|
||||
This defines the address of the shared MM communication buffer
|
||||
used for communication between the MM feature in U-Boot and
|
||||
the MM SP in secure world.
|
||||
It is assumed that the MM SP knows the address of the shared MM communication buffer.
|
||||
|
||||
config EFI_VARIABLE_NO_STORE
|
||||
bool "Don't persist non-volatile UEFI variables"
|
||||
help
|
||||
|
||||
Reference in New Issue
Block a user