The SCT can be run on real hardware, on QEMU, or on the U-Boot sandbox.
For running on the sandbox execute
make sandbox_defconfig
Then apply the following changes to file .config:
CONFIG_SANDBOX_RAM_SIZE_MB=256
CONFIG_SANDBOX_CRASH_RESET=y
CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="host bind 0 sct.img && load host 0:1 $kernel_addr_r Shell.efi && bootefi $kernel_addr_r"
# CONFIG_CONSOLE_TRUETYPE is not set
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_PANIC_HANG is not set
On 32-bit systems additionally apply:
CONFIG_HOST_32BIT=y
-
The memory size is increased to work around a memory leak when running the SCT.
-
The TrueType console does not support colored output yet and by default does not use a mono-spaced font.
-
PREBOOT is needed to run the tests which involve resets.
Start the sandbox with
./u-boot -l -S -T -N
February 1st, 2021
The UEFI SCT test implementation has separate routines for testing if parameters are correctly checked (conformance tests) and if a function does it jobs (function tests).
- FAIL signifies that at least one failure was reported. It does not imply that the function is not working at all.
- - signifies that the test reported no result
- N/A signifies that no test for this category is available.
| Service | Conformance | Function |
|---|---|---|
| Event, Timer, and Task Priority Services | ||
| CheckEvent | PASS | PASS |
| CloseEvent | N/A | PASS |
| CreateEventEx | PASS | PASS |
| CreateEvent | PASS | PASS |
| RaiseTPL | N/A | PASS |
| Restore TPL | N/A | PASS |
| SignalEvent | N/A | PASS |
| SetTimer | PASS | PASS |
| WaitForEvent | PASS | PASS |
| Memory Allocation Services | ||
| AllocatePages | PASS | PASS |
| AllocatePool | PASS | PASS |
| FreePages | PASS | PASS |
| FreePool | PASS | PASS |
| GetMemoryMap | PASS | PASS |
| Protocol Handler Services | ||
| CloseProtocol | PASS | PASS |
| ConnectController | PASS | FAIL 1) |
| DisconnectController | PASS | PASS |
| HandleProtocol | PASS | PASS |
| InstallMultipleProtocolInterfaces | PASS | PASS |
| InstallProtocolInterface | PASS | PASS |
| LocateDevicePath | PASS | PASS |
| LocateHandleBuffer | PASS | PASS |
| LocateHandle | PASS | PASS |
| LocateProtocol | PASS | PASS |
| OpenProtocolInformation | PASS | PASS |
| OpenProtocol | PASS | PASS |
| ProtocolsPerHandle | PASS | PASS |
| RegisterProtocolNotify | PASS | PASS |
| ReinstallProtocolInterface | PASS | PASS |
| UninstallMultipleProtocolInterfaces | PASS | PASS |
| UninstallProtocolInterface | PASS | PASS |
| Images Services | ||
| ExitBootServices | PASS | N/A |
| Exit | PASS | PASS |
| LoadImage | PASS | FAIL 2) |
| StartImage | PASS | PASS |
| UnloadImage | PASS | PASS |
| Miscellaneous Boot Services | ||
| CalculateCrc32 | PASS | PASS |
| CopyMem | N/A | PASS |
| GetNextMonotonicCount | PASS | FAIL |
| InstallConfigurationTable | PASS | PASS |
| SetMem | N/A | PASS |
| SetWatchDogTimer | - | PASS |
| Stall | N/A | PASS |
-
Override protocols not supported
-
Loading of HII resource file not supported.
| Service | Conformance | Function |
|---|---|---|
| Variable Services | ||
| AuthVar | FAIL | FAIL |
| GetNextVariableName | PASS | PASS |
| GetVariable | PASS | PASS |
| HardwareErrorRecord | - | - |
| QueryVariableInfo | FAIL | - |
| SetVariable | PASS | PASS |
| Time Services | ||
| GetTime | PASS | PASS |
| GetWakeupTime | - | - |
| SetTime | PASS | FAIL 1) |
| SetWakeupTime | - | - |
| Miscellaneous Runtime Services | ||
| QueryCapsuleCapabilities | PASS | PASS |
| ResetSystem | N/A | PASS |
| UpdateCapsule | FAIL | N/A |
- Setting of daylight saving time is not fully supported, setting the time zone is not supported.
| Protocol | Conformance | Function |
|---|---|---|
| LoadedImageProtocol | ||
| Test 1 | N/A | PASS |
| Teet 2 | N/A | PASS |
| DevicePathProtocol | ||
| PathNodeConf | PASS | N/A |
| DevicePathUtilitiesProtocol | ||
| AppendDeviceNode | PASS | PASS |
| AppendDevicePathInstance | PASS | PASS |
| AppendDevicePath | PASS | PASS |
| CreateDeviceNode | PASS | PASS |
| DuplicateDevicePath | PASS | PASS |
| GetDevicePathSize | PASS | PASS |
| GetNextDevicePathInstance | PASS | PASS |
| IsDevicePathMultiInstance | N/A | PASS |
| DevicePathToTextProtocol | ||
| ConvertDeviceNodeToText | PASS | FAIL |
| ConvertDevicePathToText | PASS | FAIL |
| SimpleFileSystemProtocol | ||
| Close | N/A | PASS |
| Delete | PASS | PASS |
| FlushEx | PASS | PASS |
| Flush | PASS | PASS |
| GetInfo | PASS | PASS |
| GetPosition | PASS | - |
| OpenEx | PASS | PASS |
| OpenVolume | N/A | PASS |
| Open | PASS | PASS |
| ReadEx | PASS | PASS |
| SetInfo | FAIL | FAIL |
| SetPosition | PASS | PASS |
| WriteEx | FAIL | - |
| Write | N/A | - |
| BlockIOProtocol | ||
| FlushBlocks | - | - |
| MediaInfoIntegrity | N/A | - |
| ReadBlocks | PASS | PASS |
| Reset | N/A | PASS |
| SimpleNetworkProtocol | ||
| GetStatus | PASS | PASS |
| Initialize | PASS | PASS |
| MCastIpToMac | PASS | PASS |
| NVData | - | - |
| ReceiveFilterConf | - | FAIL |
| Receive | PASS | N/A |
| Reset | N/A | - |
| Shutdown | PASS | PASS |
| Start | PASS | PASS |
| StationAddress | - | - |
| Statistics | - | PASS |
| Stop | PASS | PASS |
| Transmit | PASS | N/A |
| UnicodeCollation2Protocol | ||
| FatToStr | N/A | PASS |
| MetaiMatch | N/A | PASS |
| StriColl | N/A | PASS |
| StrLwr | N/A | PASS |
| StrToFat | N/A | PASS |
| StrUpr | N/A | PASS |
| HIIDatabaseProtocol | ||
| ExportPackageLists | FAIL | - |
| FindKeyboardLayouts | PASS | - |
| GetKeyboardLayout | PASS | - |
| GetPackageListHandle | FAIL | - |
| ListPackageLists | PASS | - |
| NewPackageList | PASS | FAIL |
| RegisterPackageNotify | PASS | N/A |
| RemovePackageList | PASS | - |
| SetKeyboardLayout | FAIL | - |
| UnregisterPackageNotify | PASS | N/A |
| UpdatePackageList | PASS | - |
| HIIStringProtocol | ||
| GetLanguages | - | - |
| GetSecondaryLanguages | - | - |
| GetString | - | - |
| NewString | - | - |
| SetString | - | - |
| SimpleTextInputExProtocol | ||
| ReadKeyStrokeEx | PASS | - |
| RegisterKeyNotify | PASS | N/A |
| Reset | N/A | PASS |
| SetState | PASS | N/A |
| UnregisterKeyNotify | PASS | N/A |
| SimpleInputProtocol | ||
| Reset | N/A | PASS |
| SimpleOutputProtocol | ||
| ClearScreen | N/A | PASS |
| EnableCursor | N/A | PASS |
| OutputString | N/A | PASS |
| QueryMode | PASS | PASS |
| Reset | N/A | PASS |
| SetAttribute | N/A | PASS |
| SetCursorPosition | PASS | PASS |
| SetMode | PASS | PASS |
| TestString | N/A | PASS |
| GraphicsOutputProtocol | ||
| BltVideoBltBuffer | N/A | FAIL |
| BltVideoFill | N/A | FAIL |
| BltVideoToVideo | N/A | PASS |
| Blt | PASS | N/A |
| QueryMode | PASS | PASS |
| SetMode | PASS | PASS |
| RNGProtocolTest | ||
| GetInfo | PASS | PASS |
| GetRNG | PASS | PASS |
- EFI_DECOMPRESS_PROTOCOL - required for any UEFI system
- EFI_DISK_IO_PROTOCOL - required if device can boot from a disk device