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(>estguid, 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