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.