[PATCH 0/3] Conformance Profiles Table support in U-boot

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Dec 23 19:27:42 CET 2021

On 12/23/21 16:20, Jose Marinho wrote:
> Hi Heinrich,
>> The change suggested in
>> https://bugzilla.tianocore.org/show_bug.cgi?id=3591
>> is a not well designed: How could the missing of a table ever be taken as a
>> sign of compliance?
> Below is my interpretation of intent behind the ECPT changes:
> The UEFI spec specifies a set of requirements for UEFI compliance in Section 2.6.
> Any complete UEFI implementation must adhere to the requirements in Section 2.6.
> The Conformance Profiles allow for "partial" UEFI implementations, which implement a subset of the full UEFI requirements.
> The conformance with a particular profile should be explicitly advertised (via the conformance profiles table). If not, then full compliance with the Section 2.6 requirements is assumed.
>> How would an application make use of the table?
>> What information does it provide that is not better obtained from API calls?
> With the ECPT, an application can easily detect the UEFI profile that's implemented and hence adopt a model of execution that suits that profile.
> Alternatively the application could probe the different RT services, UEFI variables, etc to "detect" a profile. The table allows for a more straightforward or simpler detection.

U-Boot in many cases will not implement any of the profiles in full.
E.g. GetTime() might be missing if there is no RTC. The table will not
be very helpful as it will be empty in these cases. Why should we blow
up the U-Boot code size with this - most of the time - useless table?

>> As the table is not defined in UEFI 2.9 and no software uses it, why should we
>> implement it?
> The code first UEFI ECR was accepted. Once a UEFI ECR is accepted it becomes part of the UEFI specification.

Code first? https://bugzilla.tianocore.org/show_bug.cgi?id=3591 does not
indicate any implementation of code using or providing the table.

The way the new table was defined does not make sense. It is assumed
that if the table is missing the UEFI implementation is compliant to the
complete UEFI spec. This aspect needs to be fixed. It is not too late to
do so.

This is the paragraph that needs to change:

"The absence of this table shall indicate that the platform
implementation is conformant with the UEFI specification requirements,
as defined in section 2.6. This is equivalent to publishing this
configuration table with the EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID
conformance profile."

Best regards


> Regards,
> Jose
>> Best regards
>> Heinrich
>>> The ECPT table was introduced in UEFI following the code-first path.
>>> The acceptance ticket can be viewed at:
>>> 	https://bugzilla.tianocore.org/show_bug.cgi?id=3591
>>> This patch set implements the ECPT table in U-boot.
>>> Jose Marinho (3):
>>>     efi: Create ECPT table
>>>     efi: ECPT add EBBRv2.0 conformance profile
>>>     cmd: efi: efidebug print ECPT table
>>>    cmd/efidebug.c                   | 45 +++++++++++++++++++
>>>    include/efi_api.h                | 14 ++++++
>>>    include/efi_loader.h             |  9 ++++
>>>    lib/efi_loader/Kconfig           | 12 +++++
>>>    lib/efi_loader/Makefile          |  1 +
>>>    lib/efi_loader/efi_conformance.c | 75
>> ++++++++++++++++++++++++++++++++
>>>    lib/efi_loader/efi_setup.c       |  6 +++
>>>    7 files changed, 162 insertions(+)
>>>    create mode 100644 lib/efi_loader/efi_conformance.c

More information about the U-Boot mailing list