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

Heinrich


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



Reply via email to