EFI_ABORT error return from UEFIRuntimeQueryCapsuleCapabilities

Dong, Eric eric.dong at intel.com
Thu Nov 28 15:07:39 UTC 2024


Hi Tool owner,
[cid:image001.png at 01DB41EA.0B89BB10]

I'm checking the error for uefirtmisc part. When checking the log and BIOS code:

FAILED [HIGH] UEFIRuntimeQueryCapsuleCapabilities: Test 1, Failed to query
capsule capabilities with UEFI runtime service with flag value 0x0.
Return status: EFI_ABORTED. The operation was aborted.

FAILED [HIGH] UEFIRuntimeQueryCapsuleCapabilities: Test 2, Failed to query
capsule capabilities with UEFI runtime service with flag value 0x0.
Return status: EFI_DEVICE_ERROR. The physical device reported an error while
attempting the operation.

Checked the related code logic in FWTS tool like below:

FWTS Code repo :  fwts/src/uefi/uefirtmisc/uefirtmisc.c at master * fwts/fwts (github.com)<https://github.com/fwts/fwts/blob/master/src/uefi/uefirtmisc/uefirtmisc.c>
for (i = 0; i < multitesttime; i++) {
                                status = ~0ULL;
                                long ioret = ioctl(fd, EFI_RUNTIME_QUERY_CAPSULECAPABILITIES, &querycapsulecapabilities);
                                if (ioret == -1) {
                                                if (status == EFI_UNSUPPORTED) {
                                                                fwts_skipped(fw, "Not support the UEFI QueryCapsuleCapabilities runtime interface"
                                                                                                 " with flag value 0x%" PRIx32 ": cannot test.", flag);
                                                                fwts_advice(fw, "Firmware also needs to check if the revision of system table is correct or not."
                                                                                                " Linux kernel returns EFI_UNSUPPORTED as well, if the FirmwareRevision"
                                                                                                " of system table is less than EFI_2_00_SYSTEM_TABLE_REVISION.");
                                                                return FWTS_SKIP;
                                                } else {
                                                                fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeQueryCapsuleCapabilities",
                                                                                "Failed to query capsule capabilities with UEFI runtime service"
                                                                                " with flag value 0x%" PRIx32 ".", flag);
                                                                fwts_uefi_print_status_info(fw, status);
                                                                return FWTS_ERROR;
                                                }
                                }
                }


FWTS Code repo : fwts/src/uefi/uefirtauthvar/uefirtauthvar.c at master * fwts/fwts (github.com)<https://github.com/fwts/fwts/blob/master/src/uefi/uefirtauthvar/uefirtauthvar.c>
static int uefirtauthvar_test1(fwts_framework *fw)
{
                long ioret;

                uint8_t data[GETVAR_BUF_SIZE];
                uint64_t getdatasize = sizeof(data);
                uint64_t status;
                uint32_t attributestest;
                size_t i;

                ioret = setvar(&gtestguid, attributes, sizeof(AuthVarCreate), AuthVarCreate, &status);


                if (ioret == -1) {
                                int supcheck = check_fw_support(fw, status);

                                if (supcheck != FWTS_OK)
                                                return supcheck;

                                fwts_failed(fw, LOG_LEVEL_HIGH,
                                                "UEFICreateAuthVar",
                                                "Failed to create authenticated variable with UEFI "
                                                "runtime service.");

                                fwts_uefi_print_status_info(fw, status);
                                return FWTS_ERROR;
                }

I cannot find any error case that we will return EFI_ABOURT or EFI_DEVICE_ERROR in BIOS RT->QueryCapsuleCapabilities function.
Is it possible that this test case gets the error returns before really calling into BIOS RT service QueryCapsuleCapabilities()?
Can someone from tool side help to take a look?

Thanks,
Eric

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20241128/edd7322f/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 33325 bytes
Desc: image001.png
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20241128/edd7322f/attachment-0001.png>


More information about the fwts-devel mailing list