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