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