u-boot/lib/efi_loader
Abdellatif El Khlifi 218b062e8f 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>
2023-08-08 10:22:03 -04:00
..
.gitignore efi_loader: git ignore helloworld_efi.S 2020-01-07 18:08:20 +01:00
boothart.c efi_loader: add an EFI binary to print boot hart ID 2022-12-02 19:17:24 +01:00
dtbdump.c efi_loader: move dtbdump.c, initrddump.c to lib/efi_loader 2022-03-20 17:01:00 +01:00
efi_acpi.c efi: Use the installed ACPI tables 2023-07-17 17:23:15 +08:00
efi_bootmgr.c Load option with short device path for boot vars 2023-07-15 11:20:41 +02:00
efi_boottime.c efi_loader: make efi_delete_handle() follow the EFI spec 2023-07-28 11:36:37 +02:00
efi_capsule.c efi_loader: fix an IS_ERR() vs NULL check 2023-08-03 09:21:02 +02:00
efi_conformance.c efi_loader: fix efi_ecpt_register() 2023-02-10 13:05:40 +01:00
efi_console.c efi_loader: describe term_get_char() 2023-03-13 13:56:14 +01:00
efi_device_path.c efi_loader: simplify dp_fill() 2023-07-28 11:36:37 +02:00
efi_device_path_to_text.c efi_loader: simplify efi_str_to_u16() 2023-03-25 11:06:35 +01:00
efi_device_path_utilities.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_disk.c efi_loader: error handling in efi_disk_add_dev 2023-08-03 09:21:03 +02:00
efi_dt_fixup.c treewide: Drop bootm_headers_t typedef 2022-09-29 16:07:57 -04:00
efi_esrt.c efi_loader: fix comment in ESRT code 2023-01-27 18:32:00 +01:00
efi_file.c efi_loader: catch out of memory in file_open 2023-08-03 09:21:03 +02:00
efi_firmware.c efi_loader: check uuid_str_to_bin return value 2023-08-03 09:21:03 +02:00
efi_freestanding.c trace: Use notrace for short 2023-01-18 11:49:12 -07:00
efi_gop.c efi_loader: make gop_blt() static 2023-02-10 13:05:40 +01:00
efi_helper.c Move bootorder and bootoption apis to lib 2023-07-15 11:20:41 +02:00
efi_hii.c efi_loader: refine set_keyboard_layout() status 2023-01-13 09:09:07 +01:00
efi_hii_config.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_image_loader.c efi_loader: Fix memory corruption on 32bit systems 2023-08-03 09:21:02 +02:00
efi_load_initrd.c efi_loader: remove efi_delete_handle on loadfile2 2022-10-16 12:23:22 +02:00
efi_load_options.c efi_loader: fix uninitialized variable bug in efi_set_load_options() 2023-07-28 11:36:37 +02:00
efi_memory.c efi_loader: memory leak efi_add_memory_map_pg 2023-08-03 09:21:02 +02:00
efi_net.c efi_loader: fix handling of DHCP acknowledge 2022-12-02 19:17:24 +01:00
efi_riscv.c efi_loader: use EFI_EXIT in efi_riscv_get_boot_hartid 2023-01-13 09:09:07 +01:00
efi_rng.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_root_node.c Correct SPL use of EFI_UNICODE_COLLATION_PROTOCOL2 2023-02-09 16:32:26 -05:00
efi_runtime.c efi: loader: Make efi_runtime_mmio static 2023-04-08 07:46:44 +02:00
efi_setup.c efi_loader: set CapsuleMax from CONFIG_EFI_CAPSULE_MAX 2023-02-19 21:15:15 +01:00
efi_signature.c efi_loader: signature: export efi_hash_regions() 2022-07-05 14:37:16 +02:00
efi_smbios.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_string.c efi: Add string conversion helper 2022-10-06 22:54:57 +02:00
efi_tcg2.c efi_loader: error handling in tcg2_hash_pe_image() 2023-08-03 09:21:02 +02:00
efi_unicode_collation.c efi_loader: Fix buffer underflow 2022-11-22 11:54:30 +01:00
efi_var_common.c efi_loader: update attribute check for QueryVariableInfo() 2023-02-10 13:05:39 +01:00
efi_var_file.c efi_loader: avoid adding variables twice 2022-12-29 10:51:50 +01:00
efi_var_mem.c efi_loader: Avoid underflow when calculating remaining var store size 2023-07-09 03:53:08 +02:00
efi_var_seed.S efi_loader: pre-seed UEFI variables 2020-07-16 12:37:02 +02:00
efi_variable.c efi_loader: update SetVariable attribute check 2023-03-13 13:56:14 +01:00
efi_variable_tee.c arm_ffa: efi: introduce FF-A MM communication 2023-08-08 10:22:03 -04:00
efi_watchdog.c efi_loader: update the timing of enabling and disabling EFI watchdog 2022-02-26 07:37:01 +01:00
helloworld.c efi_loader: print file path w/o boot device 2023-05-13 11:09:51 +02:00
initrddump.c efi_loader: avoid using HandleProtocol in initrddump.efi 2023-04-08 07:45:34 +02:00
Kconfig arm_ffa: efi: introduce FF-A MM communication 2023-08-08 10:22:03 -04:00
Makefile efi: Correct .efi rules 2023-05-31 17:23:01 -04:00