Dong,
Looking at the current state of EBBR, Appendix A contains a big list of boot/runtime services and protocols that are required to be implemented. However, I don't think this list has been audited, and I'm not sure how much of it is actually needed. Some of these things (like the list of boot/runtime services) seem to be required by the UEFI spec, so it is redundant to list them here.
I'm also unsure on the list of protocols. Some I'm sure are already required by the UEFI spec. e.g., UEFI section 2.6.1 requires EFI_LOADED_IMAGE_PROTOCOL, EFI_LOADED_IMAGE_DEVICE_PATH, EFI_DEVICE_PATH_PROTOCOL, EFI_DECOMPRESS_PROTOCOL, and EFI_DEVICE_PATH_UTILITIES_PROTOCOL, so is it necessary to list them in EBBR?
Looking at the current U-Boot implementation, only the following protocols are implemented:
include/efi_api.h|277| #define LOADED_IMAGE_PROTOCOL_GUID \ include/efi_api.h|519| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ include/efi_api.h|590| #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ include/efi_api.h|603| #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ include/efi_api.h|619| #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ include/efi_api.h|853| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|882| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|933| #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
Presumably Grub and the kernel only use the above protocols, and they are sufficient to handle perform the distro installer use case. Yet it is not compliant with UEFI 2.7. Notably missing are:
UEFI § 2.6.1 - EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL - EFI_DEVICE_PATH_PROTOCOL - EFI_DECOMPRESS_PROTOCOL UEFI § 2.6.2 - EFI_SIMPLE_TEXT_EX_PROTOCOL - EFI_BLOCK_IO_PROTOCOL - EFI_DISK_IO_PROTOCOL - EFI_UNICODE_COLLATION_PROTOCOL - EFI_SERIAL_IO_PROTOCOL - EFI_USB2_HC_PROTOCOL - EFI_USB_IO_PROTOCOL
In fact, perhaps what EBBR needs is a list of exceptions to the UEFI § 2.6 requirements (expected to reduce over time as the U-Boot implementation matures). Thoughts?
For discussion, I've pasted the text of the current UEFI appendix below to make it easy to comment on the mailing list.
g.
---
.. _appendix-uefi-requirements:
############################################# APPENDIX A - UEFI Implementation Requirements #############################################
Required Boot Services **********************
========================================== ====== Service UEFI § ========================================== ====== EFI_RAISE_TPL 7.1 EFI_RESTORE_TPL 7.1 EFI_ALLOCATE_PAGES 7.2 EFI_FREE_PAGES 7.2 EFI_GET_MEMORY_MAP 7.2 EFI_ALLOCATE_POOL 7.2 EFI_FREE_POOL 7.2 EFI_CREATE_EVENT 7.1 EFI_SET_TIMER 7.1 EFI_WAIT_FOR_EVENT 7.1 EFI_SIGNAL_EVENT 7.1 EFI_CLOSE_EVENT 7.1 EFI_INSTALL_PROTOCOL_INTERFACE 7.3 EFI_REINSTALL_PROTOCOL_INTERFACE 7.3 EFI_UNINSTALL_PROTOCOL_INTERFACE 7.3 EFI_HANDLE_PROTOCOL 7.3 EFI_REGISTER_PROTOCOL_NOTIFY 7.3 EFI_LOCATE_HANDLE 7.3 EFI_LOCATE_PROTOCOL 7.3 EFI_LOCATE_DEVICE_PATH 7.3 EFI_INSTALL_CONFIGURATION_TABLE 7.3 EFI_IMAGE_LOAD 7.4 EFI_IMAGE_START 7.4 EFI_EXIT 7.4 EFI_IMAGE_UNLOAD 7.4 EFI_EXIT_BOOT_SERVICES 7.4 EFI_GET_NEXT_MONOTONIC_COUNT 7.5 EFI_STALL 7.5 EFI_SET_WATCHDOG_TIMER 7.5 EFI_CONNECT_CONTROLLER 7.3 EFI_DISCONNECT_CONTROLLER 7.3 EFI_OPEN_PROTOCOL 7.3 EFI_CLOSE_PROTOCOL 7.3 EFI_OPEN_PROTOCOL_INFORMATION 7.3 EFI_PROTOCOLS_PER_HANDLE 7.3 EFI_LOCATE_HANDLE_BUFFER 7.3 EFI_LOCATE_PROTOCOL 7.3 EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3 EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3 EFI_CALCULATE_CRC32 7.5 EFI_COPY_MEM 7.5 EFI_SET_MEM 7.5 EFI_CREATE_EVENT_EX 7.5 ========================================== ====== Required Runtime Services *************************
========================================== ====== Service UEFI § ========================================== ====== EFI_GET_TIME 8.3 EFI_SET_TIME 8.3 EFI_GET_WAKEUP_TIME 8.3 EFI_SET_WAKEUP_TIME 8.3 EFI_SET_VIRTUAL_ADDRESS_MAP 8.4 EFI_CONVERT_POINTER 8.4 EFI_GET_VARIABLE 8.2 EFI_GET_NEXT_VARIABLE_NAME 8.2 EFI_SET_VARIABLE 8.2 EFI_GET_NEXT_HIGH_MONO_COUNT 8.5 EFI_RESET_SYSTEM 8.5 EFI_UPDATE_CAPSULE 8.5 EFI_QUERY_CAPSULE_CAPABILITIES 8.5 EFI_QUERY_VARIABLE_INFO 8.5 ========================================== ======
.. note:: EFI_GET_WAKEUP_TIME and EFI_SET_WAKEUP_TIME must be implemented, but might simply return EFI_UNSUPPORTED.
Required UEFI Protocols ***********************
Core UEFI Protocols ===================
========================================== ====== Service UEFI § ========================================== ====== EFI_LOADED_IMAGE_PROTOCOL 9.1 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL 9.2 EFI_DECOMPRESS_PROTOCOL 19.5 EFI_DEVICE_PATH_PROTOCOL 10.2 EFI_DEVICE_PATH_UTILITIES_PROTOCOL 10.3 ========================================== ======
Media I/O Protocols ===================
========================================== ====== Service UEFI § ========================================== ====== EFI_LOAD_FILE2_PROTOCOL 13.2 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL 13.4 EFI_FILE_PROTOCOL 13.5 ========================================== ======
Console Protocols =================
========================================== ====== Service UEFI § ========================================== ====== EFI_SIMPLE_TEXT_INPUT_PROTOCOL 12.2 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL 12.3 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 12.4 ========================================== ====== Driver Configuration Protocols ==============================
========================================== ====== Service UEFI § ========================================== ====== EFI_HII_DATABASE_PROTOCOL 33.4 EFI_HII_STRING_PROTOCOL 33.4 EFI_HII_CONFIG_ROUTING_PROTOCOL 33.4 EFI_HII_CONFIG_ACCESS_PROTOCOL 33.4 ========================================== ======
Optional UEFI Protocols ***********************
Basic Networking Support ========================
============================================ ====== Service UEFI § ============================================ ====== EFI_SIMPLE_NETWORK_PROTOCOL 24.1 EFI_MANAGED_NETWORK_PROTOCOL 25.1 EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL 25.1 ============================================ ======
.. note:: Networking services are optional on platforms that do not support networking.
Network Boot Protocols ======================
========================================== ====== Service UEFI § ========================================== ====== EFI_PXE_BASE_CODE_PROTOCOL 24.3 EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL 24.4 EFI_BIS_PROTOCOL 24.5 EFI_MTFTP4_PROTOCOL 30.3 EFI_MTFTP6_PROTOCOL 30.4 ========================================== ======
.. note:: EFI_BIS_PROTOCOL is optional on machines that do not support Secure Boot.
IPV4 Network Support ====================
========================================== ====== Service UEFI § ========================================== ====== EFI_ARP_PROTOCOL 29.1 EFI_ARP_SERVICE_BINDING_PROTOCOL 29.1 EFI_DHCP4_SERVICE_BINDING_PROTOCOL 29.2 EFI_DHCP4_PROTOCOL 29.2 EFI_TCP4_PROTOCOL 28.1.2 EFI_TCP4_SERVICE_BINDING_PROTOCOL 28.1.1 EFI_IP4_SERVICE_BINDING_PROTOCOL 28.3.1 EFI_IP4_CONFIG2_PROTOCOL 28.5 EFI_UDP4_PROTOCOL 30.1.2 EFI_UDP4_SERVICE_BINDING_PROTOCOL 30.1.1 ========================================== ======
.. note:: Networking services are optional on platforms that do not support networking.
IPV6 Network Support ====================
========================================== ====== Service UEFI § ========================================== ====== EFI_DHCP6_PROTOCOL 29.3.2 EFI_DHCP6_SERVICE_BINDING_PROTOCOL 29.3.1 EFI_TCP6_PROTOCOL 28.2.2 EFI_TCP6_SERVICE_BINDING_PROTOCOL 28.2.1 EFI_IP6_SERVICE_BINDING_PROTOCOL 28.6.1 EFI_IP6_CONFIG_PROTOCOL 28.7 EFI_UDP6_PROTOCOL 30.2.2 EFI_UDP6_SERVICE_BINDING_PROTOCOL 30.2.1 ========================================== ======
.. note:: Networking services are optional on platforms that do not support networking.
VLAN Protocols ==============
========================================== ====== Service UEFI § ========================================== ====== EFI_VLAN_CONFIG_PROTOCOL 27.1 ========================================== ======
iSCSI Protocols ===============
========================================== ====== Service UEFI § ========================================== ====== EFI_ISCSI_INITIATOR_NAME_PROTOCOL 16.2 ========================================== ======
.. note:: Support for iSCSI is only required on machines that lack persistent storage, such as a, HDD. This configuration is intended for thin clients and compute-only nodes
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
On 06.07.18 14:57, Grant Likely wrote:
Dong,
Looking at the current state of EBBR, Appendix A contains a big list of boot/runtime services and protocols that are required to be implemented. However, I don't think this list has been audited, and I'm not sure how much of it is actually needed. Some of these things (like the list of boot/runtime services) seem to be required by the UEFI spec, so it is redundant to list them here.
I'm also unsure on the list of protocols. Some I'm sure are already required by the UEFI spec. e.g., UEFI section 2.6.1 requires EFI_LOADED_IMAGE_PROTOCOL, EFI_LOADED_IMAGE_DEVICE_PATH, EFI_DEVICE_PATH_PROTOCOL, EFI_DECOMPRESS_PROTOCOL, and EFI_DEVICE_PATH_UTILITIES_PROTOCOL, so is it necessary to list them in EBBR?
Looking at the current U-Boot implementation, only the following protocols are implemented:
include/efi_api.h|277| #define LOADED_IMAGE_PROTOCOL_GUID \ include/efi_api.h|519| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ include/efi_api.h|590| #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ include/efi_api.h|603| #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ include/efi_api.h|619| #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ include/efi_api.h|853| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|882| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|933| #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
I think this list is missing a few protocols we do implement. Here's a list of the current efi-next tree:
$ git grep -e '^const efi_gui' lib/efi_loader | cut -d ' ' -f 3 efi_guid_fdt efi_guid_driver_binding_protocol efi_guid_event_group_exit_boot_services efi_guid_event_group_virtual_address_change efi_guid_event_group_memory_map_change efi_guid_event_group_ready_to_boot efi_guid_event_group_reset_system efi_guid_text_output_protocol efi_guid_text_input_protocol efi_guid_device_path_to_text_protocol efi_guid_device_path_utilities_protocol efi_block_io_guid efi_file_system_info_guid efi_global_variable_guid efi_guid_device_path efi_guid_loaded_image efi_simple_file_system_protocol_guid efi_file_info_guid
Alex
On 06/07/2018 14:03, Alexander Graf wrote:
On 06.07.18 14:57, Grant Likely wrote:
Dong,
Looking at the current state of EBBR, Appendix A contains a big list of boot/runtime services and protocols that are required to be implemented. However, I don't think this list has been audited, and I'm not sure how much of it is actually needed. Some of these things (like the list of boot/runtime services) seem to be required by the UEFI spec, so it is redundant to list them here.
I'm also unsure on the list of protocols. Some I'm sure are already required by the UEFI spec. e.g., UEFI section 2.6.1 requires EFI_LOADED_IMAGE_PROTOCOL, EFI_LOADED_IMAGE_DEVICE_PATH, EFI_DEVICE_PATH_PROTOCOL, EFI_DECOMPRESS_PROTOCOL, and EFI_DEVICE_PATH_UTILITIES_PROTOCOL, so is it necessary to list them in EBBR?
Looking at the current U-Boot implementation, only the following protocols are implemented:
include/efi_api.h|277| #define LOADED_IMAGE_PROTOCOL_GUID \ include/efi_api.h|519| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ include/efi_api.h|590| #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ include/efi_api.h|603| #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ include/efi_api.h|619| #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ include/efi_api.h|853| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|882| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|933| #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
I think this list is missing a few protocols we do implement. Here's a list of the current efi-next tree:
$ git grep -e '^const efi_gui' lib/efi_loader | cut -d ' ' -f 3 efi_guid_fdt efi_guid_driver_binding_protocol efi_guid_event_group_exit_boot_services efi_guid_event_group_virtual_address_change efi_guid_event_group_memory_map_change efi_guid_event_group_ready_to_boot efi_guid_event_group_reset_system efi_guid_text_output_protocol efi_guid_text_input_protocol efi_guid_device_path_to_text_protocol efi_guid_device_path_utilities_protocol efi_block_io_guid efi_file_system_info_guid efi_global_variable_guid efi_guid_device_path efi_guid_loaded_image efi_simple_file_system_protocol_guid efi_file_info_guid
True. I did a very quick search and I definitely missed stuff. The GUID #defines are not uniformly named (It would be nice if they were collected in the same place, or all followed the EFI_*_PROTOCOL_GUID convention). Also, a bunch of the items listed here are events which I left out of my list.
Still, the main question remains: For EBBR to be useful and avoid being redundant, does EBBR need to make optional particular protocols that are required in UEFI? Does EBBR need to require particular protocols that are optional in UEFI?
g.
Alex
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
On 06.07.18 15:10, Grant Likely wrote:
On 06/07/2018 14:03, Alexander Graf wrote:
On 06.07.18 14:57, Grant Likely wrote:
Dong,
Looking at the current state of EBBR, Appendix A contains a big list of boot/runtime services and protocols that are required to be implemented. However, I don't think this list has been audited, and I'm not sure how much of it is actually needed. Some of these things (like the list of boot/runtime services) seem to be required by the UEFI spec, so it is redundant to list them here.
I'm also unsure on the list of protocols. Some I'm sure are already required by the UEFI spec. e.g., UEFI section 2.6.1 requires EFI_LOADED_IMAGE_PROTOCOL, EFI_LOADED_IMAGE_DEVICE_PATH, EFI_DEVICE_PATH_PROTOCOL, EFI_DECOMPRESS_PROTOCOL, and EFI_DEVICE_PATH_UTILITIES_PROTOCOL, so is it necessary to list them in EBBR?
Looking at the current U-Boot implementation, only the following protocols are implemented:
include/efi_api.h|277| #define LOADED_IMAGE_PROTOCOL_GUID \ include/efi_api.h|519| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ include/efi_api.h|590| #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ include/efi_api.h|603| #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ include/efi_api.h|619| #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ include/efi_api.h|853| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|882| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|933| #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
I think this list is missing a few protocols we do implement. Here's a list of the current efi-next tree:
$ git grep -e '^const efi_gui' lib/efi_loader | cut -d ' ' -f 3 efi_guid_fdt efi_guid_driver_binding_protocol efi_guid_event_group_exit_boot_services efi_guid_event_group_virtual_address_change efi_guid_event_group_memory_map_change efi_guid_event_group_ready_to_boot efi_guid_event_group_reset_system efi_guid_text_output_protocol efi_guid_text_input_protocol efi_guid_device_path_to_text_protocol efi_guid_device_path_utilities_protocol efi_block_io_guid efi_file_system_info_guid efi_global_variable_guid efi_guid_device_path efi_guid_loaded_image efi_simple_file_system_protocol_guid efi_file_info_guid
True. I did a very quick search and I definitely missed stuff. The GUID #defines are not uniformly named (It would be nice if they were collected in the same place, or all followed the EFI_*_PROTOCOL_GUID convention). Also, a bunch of the items listed here are events which I left out of my list.
Still, the main question remains: For EBBR to be useful and avoid being redundant, does EBBR need to make optional particular protocols that are required in UEFI? Does EBBR need to require particular protocols that
Definitely. I think the current list should be enough for level 0.
are optional in UEFI?
I don't know on that side. Can you think of any?
Alex
Appendix A leveraged from SBBR 1.0, an older version that did not consider UEFI 2.7. The idea behind UEFI spec section 2.6 is to lay out the baseline requirements and then it is up to the system design guide to figure out any additional interfaces to require. EBBR can be considered as one of the system design guides and it is specifically meant for the embedded space. So the first question is whether the baseline requirements can all be met by this embedded space (are there any that need to be made optional), and what other interfaces that are optional in the UEFI spec that may need to be made required.
Anyways I fully expect that we adapt that Appendix to this embedded space.
- DW - -----Original Message----- From: Grant Likely Sent: Friday, July 6, 2018 5:57 AM To: Dong Wei Dong.Wei@arm.com; boot-architecture@lists.linaro.org; arm.ebbr-discuss arm.ebbr-discuss@arm.com Subject: UEFI requirements section
Dong,
Looking at the current state of EBBR, Appendix A contains a big list of boot/runtime services and protocols that are required to be implemented. However, I don't think this list has been audited, and I'm not sure how much of it is actually needed. Some of these things (like the list of boot/runtime services) seem to be required by the UEFI spec, so it is redundant to list them here.
I'm also unsure on the list of protocols. Some I'm sure are already required by the UEFI spec. e.g., UEFI section 2.6.1 requires EFI_LOADED_IMAGE_PROTOCOL, EFI_LOADED_IMAGE_DEVICE_PATH, EFI_DEVICE_PATH_PROTOCOL, EFI_DECOMPRESS_PROTOCOL, and EFI_DEVICE_PATH_UTILITIES_PROTOCOL, so is it necessary to list them in EBBR?
Looking at the current U-Boot implementation, only the following protocols are implemented:
include/efi_api.h|277| #define LOADED_IMAGE_PROTOCOL_GUID \ include/efi_api.h|519| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ include/efi_api.h|590| #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ include/efi_api.h|603| #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ include/efi_api.h|619| #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ include/efi_api.h|853| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|882| #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ include/efi_api.h|933| #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
Presumably Grub and the kernel only use the above protocols, and they are sufficient to handle perform the distro installer use case. Yet it is not compliant with UEFI 2.7. Notably missing are:
UEFI § 2.6.1 - EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL - EFI_DEVICE_PATH_PROTOCOL - EFI_DECOMPRESS_PROTOCOL UEFI § 2.6.2 - EFI_SIMPLE_TEXT_EX_PROTOCOL - EFI_BLOCK_IO_PROTOCOL - EFI_DISK_IO_PROTOCOL - EFI_UNICODE_COLLATION_PROTOCOL - EFI_SERIAL_IO_PROTOCOL - EFI_USB2_HC_PROTOCOL - EFI_USB_IO_PROTOCOL
In fact, perhaps what EBBR needs is a list of exceptions to the UEFI § 2.6 requirements (expected to reduce over time as the U-Boot implementation matures). Thoughts?
For discussion, I've pasted the text of the current UEFI appendix below to make it easy to comment on the mailing list.
g.
---
.. _appendix-uefi-requirements:
############################################# APPENDIX A - UEFI Implementation Requirements #############################################
Required Boot Services **********************
========================================== ====== Service UEFI § ========================================== ====== EFI_RAISE_TPL 7.1 EFI_RESTORE_TPL 7.1 EFI_ALLOCATE_PAGES 7.2 EFI_FREE_PAGES 7.2 EFI_GET_MEMORY_MAP 7.2 EFI_ALLOCATE_POOL 7.2 EFI_FREE_POOL 7.2 EFI_CREATE_EVENT 7.1 EFI_SET_TIMER 7.1 EFI_WAIT_FOR_EVENT 7.1 EFI_SIGNAL_EVENT 7.1 EFI_CLOSE_EVENT 7.1 EFI_INSTALL_PROTOCOL_INTERFACE 7.3 EFI_REINSTALL_PROTOCOL_INTERFACE 7.3 EFI_UNINSTALL_PROTOCOL_INTERFACE 7.3 EFI_HANDLE_PROTOCOL 7.3 EFI_REGISTER_PROTOCOL_NOTIFY 7.3 EFI_LOCATE_HANDLE 7.3 EFI_LOCATE_PROTOCOL 7.3 EFI_LOCATE_DEVICE_PATH 7.3 EFI_INSTALL_CONFIGURATION_TABLE 7.3 EFI_IMAGE_LOAD 7.4 EFI_IMAGE_START 7.4 EFI_EXIT 7.4 EFI_IMAGE_UNLOAD 7.4 EFI_EXIT_BOOT_SERVICES 7.4 EFI_GET_NEXT_MONOTONIC_COUNT 7.5 EFI_STALL 7.5 EFI_SET_WATCHDOG_TIMER 7.5 EFI_CONNECT_CONTROLLER 7.3 EFI_DISCONNECT_CONTROLLER 7.3 EFI_OPEN_PROTOCOL 7.3 EFI_CLOSE_PROTOCOL 7.3 EFI_OPEN_PROTOCOL_INFORMATION 7.3 EFI_PROTOCOLS_PER_HANDLE 7.3 EFI_LOCATE_HANDLE_BUFFER 7.3 EFI_LOCATE_PROTOCOL 7.3 EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3 EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3 EFI_CALCULATE_CRC32 7.5 EFI_COPY_MEM 7.5 EFI_SET_MEM 7.5 EFI_CREATE_EVENT_EX 7.5 ========================================== ====== Required Runtime Services *************************
========================================== ====== Service UEFI § ========================================== ====== EFI_GET_TIME 8.3 EFI_SET_TIME 8.3 EFI_GET_WAKEUP_TIME 8.3 EFI_SET_WAKEUP_TIME 8.3 EFI_SET_VIRTUAL_ADDRESS_MAP 8.4 EFI_CONVERT_POINTER 8.4 EFI_GET_VARIABLE 8.2 EFI_GET_NEXT_VARIABLE_NAME 8.2 EFI_SET_VARIABLE 8.2 EFI_GET_NEXT_HIGH_MONO_COUNT 8.5 EFI_RESET_SYSTEM 8.5 EFI_UPDATE_CAPSULE 8.5 EFI_QUERY_CAPSULE_CAPABILITIES 8.5 EFI_QUERY_VARIABLE_INFO 8.5 ========================================== ======
.. note:: EFI_GET_WAKEUP_TIME and EFI_SET_WAKEUP_TIME must be implemented, but might simply return EFI_UNSUPPORTED.
Required UEFI Protocols ***********************
Core UEFI Protocols ===================
========================================== ====== Service UEFI § ========================================== ====== EFI_LOADED_IMAGE_PROTOCOL 9.1 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL 9.2 EFI_DECOMPRESS_PROTOCOL 19.5 EFI_DEVICE_PATH_PROTOCOL 10.2 EFI_DEVICE_PATH_UTILITIES_PROTOCOL 10.3 ========================================== ======
Media I/O Protocols ===================
========================================== ====== Service UEFI § ========================================== ====== EFI_LOAD_FILE2_PROTOCOL 13.2 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL 13.4 EFI_FILE_PROTOCOL 13.5 ========================================== ======
Console Protocols =================
========================================== ====== Service UEFI § ========================================== ====== EFI_SIMPLE_TEXT_INPUT_PROTOCOL 12.2 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL 12.3 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 12.4 ========================================== ====== Driver Configuration Protocols ==============================
========================================== ====== Service UEFI § ========================================== ====== EFI_HII_DATABASE_PROTOCOL 33.4 EFI_HII_STRING_PROTOCOL 33.4 EFI_HII_CONFIG_ROUTING_PROTOCOL 33.4 EFI_HII_CONFIG_ACCESS_PROTOCOL 33.4 ========================================== ======
Optional UEFI Protocols ***********************
Basic Networking Support ========================
============================================ ====== Service UEFI § ============================================ ====== EFI_SIMPLE_NETWORK_PROTOCOL 24.1 EFI_MANAGED_NETWORK_PROTOCOL 25.1 EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL 25.1 ============================================ ======
.. note:: Networking services are optional on platforms that do not support networking.
Network Boot Protocols ======================
========================================== ====== Service UEFI § ========================================== ====== EFI_PXE_BASE_CODE_PROTOCOL 24.3 EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL 24.4 EFI_BIS_PROTOCOL 24.5 EFI_MTFTP4_PROTOCOL 30.3 EFI_MTFTP6_PROTOCOL 30.4 ========================================== ======
.. note:: EFI_BIS_PROTOCOL is optional on machines that do not support Secure Boot.
IPV4 Network Support ====================
========================================== ====== Service UEFI § ========================================== ====== EFI_ARP_PROTOCOL 29.1 EFI_ARP_SERVICE_BINDING_PROTOCOL 29.1 EFI_DHCP4_SERVICE_BINDING_PROTOCOL 29.2 EFI_DHCP4_PROTOCOL 29.2 EFI_TCP4_PROTOCOL 28.1.2 EFI_TCP4_SERVICE_BINDING_PROTOCOL 28.1.1 EFI_IP4_SERVICE_BINDING_PROTOCOL 28.3.1 EFI_IP4_CONFIG2_PROTOCOL 28.5 EFI_UDP4_PROTOCOL 30.1.2 EFI_UDP4_SERVICE_BINDING_PROTOCOL 30.1.1 ========================================== ======
.. note:: Networking services are optional on platforms that do not support networking.
IPV6 Network Support ====================
========================================== ====== Service UEFI § ========================================== ====== EFI_DHCP6_PROTOCOL 29.3.2 EFI_DHCP6_SERVICE_BINDING_PROTOCOL 29.3.1 EFI_TCP6_PROTOCOL 28.2.2 EFI_TCP6_SERVICE_BINDING_PROTOCOL 28.2.1 EFI_IP6_SERVICE_BINDING_PROTOCOL 28.6.1 EFI_IP6_CONFIG_PROTOCOL 28.7 EFI_UDP6_PROTOCOL 30.2.2 EFI_UDP6_SERVICE_BINDING_PROTOCOL 30.2.1 ========================================== ======
.. note:: Networking services are optional on platforms that do not support networking.
VLAN Protocols ==============
========================================== ====== Service UEFI § ========================================== ====== EFI_VLAN_CONFIG_PROTOCOL 27.1 ========================================== ======
iSCSI Protocols ===============
========================================== ====== Service UEFI § ========================================== ====== EFI_ISCSI_INITIATOR_NAME_PROTOCOL 16.2 ========================================== ======
.. note:: Support for iSCSI is only required on machines that lack persistent storage, such as a, HDD. This configuration is intended for thin clients and compute-only nodes
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
boot-architecture@lists.linaro.org