- Platform Fault Detection Interface
- PFDI - Architecture Compliance Suite
- Release details
- Documentation & Guides
- PFDI build steps
- PFDI run steps for UEFI application
- Application parameters
- Limitations
- License
PFDI specification defines a set of functions provided by Platform Firmware to System Software so that System Software can schedule the execution of tests that detect faults in PEs and are executed within or controlled by the Platform Firmware.
For more information, download the PFDI specification
The PFDI Architecture Compliance Suite (ACS) is a collection of self-checking, portable C-based tests. This suite provides examples of the invariant behaviors defined in the PFDI specification, enabling verification that these behaviors have been implemented and interpreted correctly.
All tests run from the UEFI (Unified Extensible Firmware Interface) Shell via the PFDI UEFI shell application.
- Latest release version: v0.9.0
- Execution levels: Silicon.
- Scope: The compliance suite is not a substitute for design verification.
- Access to logs: Arm licensees can contact Arm through their partner managers.
| PFDI ACS Version | PFDI Tag ID | PFDI Spec Version | Pre-Si Support |
|---|---|---|---|
| v0.9.0 | v26.03_PFDI_0.9.0 | PFDI v1.0 BET1 | No |
| v0.8.0 | v25.09_PFDI_0.8.0 | PFDI v1.0 BET0 | No |
- To pick up the release version of the code, check out the corresponding tag from the main branch.
- To get the latest code with bug fixes and new features, use the main branch.
Prebuilt images for each release are available in the prebuilt_images folder of the main branch.
- Arm PFDI Test Scenario Document - algorithms for implementable rules and notes on unimplemented rules.
- Arm PFDI Testcase Checklist - checklist for test cases and coverage details.
Follow the Common UEFI build guide to set up the edk2 workspace and Arm toolchain, then run:
source ShellPkg/Application/sysarch-acs/tools/scripts/acsbuild.sh pfdi # Device Tree flow
On a system with a functional USB port:
- Copy
pfdi.efito a USB device which is FAT formatted.
- For U-Boot firmware systems, additional steps
-
Copy
Shell.efito the USB device. Note:Shell.efiis available in prebuilt_images. -
Boot to the U-Boot shell.
-
Determine the USB device with:
usb start- Load
Shell.efito memory and boot UEFI Shell:
fatload usb <dev_num> ${kernel_addr_r} Shell.efi fatload usb 0 ${kernel_addr_r} Shell.efi -
- In UEFI Shell, refresh mappings:
map -r
- Change to the USB filesystem (e.g.,
fs0:). - Run
pfdi.efiwith required parameters (see Common CLI arguments). - Capture UART console output to a log file.
Example
Shell> pfdi.efi -v 1 -skip R0053,R0104 -f pfdi_uefi.log
Runs PFDI ACS with verbosity INFO, skips rules R0053/R0104and stores the UART output in pfdi_uefi.log.
Use PFDI rule IDs defined in PFDI checklist (for example,
R0053,R0104)
- Create a FAT image containing
pfdi.efiandShell.efi(only for U-Boot systems):(Ifmkfs.vfat -C -n HD0 hda.img 2097152 sudo mount -o rw,loop=/dev/loop0,uid=$(whoami),gid=$(whoami) hda.img /mnt/pfdi/ sudo cp "<path to application>/pfdi.efi" /mnt/pfdi/ sudo umount /mnt/pfdi/dev/loop0is busy, select a free loop device.) - Load the image to secondary storage via a backdoor (environment-specific).
- Boot to UEFI Shell.
- Identify the filesystem with
map -r. - Switch to the filesystem (
fs<x>:). - Run
pfdi.efiwith parameters. - Save UART console output for analysis/certification.
Refer to Common CLI arguments for detailed flag descriptions, logging options, and sample invocations.
- PFDI ACS currently supports only Device Tree (DT)-based platforms. ACPI support is planned for a future release.
PFDI ACS is distributed under Apache v2.0 License.
Copyright (c) 2024-2026, Arm Limited and Contributors. All rights reserved.