diff mbox series

[3/5] arm-bsp/systemready: Bring up the Arm SystemReady IR ACS 2.0 suite on FVP base

Message ID 20231103094939.1290558-3-Debbie.Martin@arm.com
State New
Headers show
Series [1/5] arm/fvp-base: Update the default testsuites | expand

Commit Message

Debbie Martin Nov. 3, 2023, 9:49 a.m. UTC
1. Configure FVP base to allow Arm SystemReady IR ACS console access.
2. Configure FVP base Arm SystemReady IR ACS firmware build.
3. Add the machine-specific report.txt for FVP base.
4. Patch the check-sr-results.yaml and format-sr-results.yaml files
   to handle the known differences between FVP base and the
   expected ACS functionality.
5. Add a README with instructions of how to use the meta-arm-systemready
   layer with fvp-base.

Signed-off-by: Debbie Martin <Debbie.Martin@arm.com>
---
 meta-arm-bsp/conf/layer.conf                  |   5 +
 meta-arm-bsp/conf/machine/fvp-base.conf       |   7 +-
 .../arm-systemready-ir-acs-fvp-base.inc       |   2 +
 .../arm-systemready-ir-acs.bbappend           |   1 +
 ...rm-systemready-scripts-native-fvp-base.inc |   5 +
 .../arm-systemready-scripts-native.bbappend   |   1 +
 ...-Change-the-expected-SR-result-confi.patch | 227 ++++++++++++++++++
 .../files/fvp-base/report.txt                 |  34 +++
 meta-arm-systemready/README.md                | 126 ++++++++++
 9 files changed, 406 insertions(+), 2 deletions(-)
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs-fvp-base.inc
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs.bbappend
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native-fvp-base.inc
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native.bbappend
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/0001-check-sr-results-Change-the-expected-SR-result-confi.patch
 create mode 100644 meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/report.txt
 create mode 100644 meta-arm-systemready/README.md

--
2.25.1
diff mbox series

Patch

diff --git a/meta-arm-bsp/conf/layer.conf b/meta-arm-bsp/conf/layer.conf
index 97d9728c..766b385d 100644
--- a/meta-arm-bsp/conf/layer.conf
+++ b/meta-arm-bsp/conf/layer.conf
@@ -19,3 +19,8 @@  LAYERDEPENDS_meta-arm-bsp:append:musca-s1 = " meta-python"

 # Additional license directories.
 LICENSE_PATH += "${LAYERDIR}/custom-licenses"
+
+BBFILES_DYNAMIC += " \
+    meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bb \
+    meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bbappend \
+"
diff --git a/meta-arm-bsp/conf/machine/fvp-base.conf b/meta-arm-bsp/conf/machine/fvp-base.conf
index 4e17a3cc..43f2a8d7 100644
--- a/meta-arm-bsp/conf/machine/fvp-base.conf
+++ b/meta-arm-bsp/conf/machine/fvp-base.conf
@@ -8,6 +8,10 @@  require conf/machine/include/arm/arch-armv8a.inc

 TUNE_FEATURES = "aarch64"

+ARM_SYSTEMREADY_FIRMWARE = "trusted-firmware-a:do_deploy"
+ARM_SYSTEMREADY_ACS_CONSOLE = "default"
+EXTRA_IMAGEDEPENDS = "${ARM_SYSTEMREADY_FIRMWARE}"
+
 MACHINE_FEATURES = "efi"

 IMAGE_NAME_SUFFIX = ""
@@ -51,9 +55,8 @@  FVP_CONFIG[bp.virtioblockdevice.image_path] ?= "${IMAGE_NAME}.wic"
 # Set the baseline to ARMv8.4, as the default is 8.0.
 FVP_CONFIG[cluster0.has_arm_v8-4] = "1"
 FVP_CONFIG[cluster1.has_arm_v8-4] = "1"
-FVP_CONSOLE ?= "terminal_0"
+FVP_CONSOLES[default] = "terminal_0"
 FVP_TERMINALS[bp.terminal_0] ?= "Console"
 FVP_TERMINALS[bp.terminal_1] ?= ""
 FVP_TERMINALS[bp.terminal_2] ?= ""
 FVP_TERMINALS[bp.terminal_3] ?= ""
-
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs-fvp-base.inc b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs-fvp-base.inc
new file mode 100644
index 00000000..376f623a
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs-fvp-base.inc
@@ -0,0 +1,2 @@ 
+FILESEXTRAPATHS:append := "${THISDIR}/files/${MACHINE}:"
+SRC_URI:append = " file://report.txt"
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs.bbappend b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs.bbappend
new file mode 100644
index 00000000..397342f4
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-ir-acs.bbappend
@@ -0,0 +1 @@ 
+include arm-systemready-ir-acs-${MACHINE}.inc
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native-fvp-base.inc b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native-fvp-base.inc
new file mode 100644
index 00000000..dc01d0a2
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native-fvp-base.inc
@@ -0,0 +1,5 @@ 
+FILESEXTRAPATHS:prepend := "${THISDIR}/files/fvp-base:"
+
+SRC_URI:append = " \
+    file://0001-check-sr-results-Change-the-expected-SR-result-confi.patch \
+"
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native.bbappend b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native.bbappend
new file mode 100644
index 00000000..49c01ee9
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/arm-systemready-scripts-native.bbappend
@@ -0,0 +1 @@ 
+include arm-systemready-scripts-native-${MACHINE}.inc
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/0001-check-sr-results-Change-the-expected-SR-result-confi.patch b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/0001-check-sr-results-Change-the-expected-SR-result-confi.patch
new file mode 100644
index 00000000..d2226cb1
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/0001-check-sr-results-Change-the-expected-SR-result-confi.patch
@@ -0,0 +1,227 @@ 
+From e3e0465a25f9b1607b2e5ed42afb7b556aa8b9bc Mon Sep 17 00:00:00 2001
+From: Debbie Martin <Debbie.Martin@arm.com>
+Date: Wed, 4 Oct 2023 18:40:18 +0100
+Subject: [PATCH] [PATCH] check-sr-results: Change the expected SR result
+ config
+
+Update the check-sr-results.yaml and format-sr-results.yaml files for the
+Systemready IR suite. These changes are required because of the
+following known differences of fvp-base outputs to those expected by the
+SystemReady scripts.
+
+Changes to check-sr-results.yaml:
+  1. acs-console.log:
+      a. must-have-esp: EFI partition/variable persistence not supported due to
+         FVP reset.
+      b. warn-once-if-contains "-dirty": BL1, BL2, and BL31 have dirty versions.
+      c. must-contain "efi: ESRT=0x" and "'esrt: Reserving ESRT space from 0x'":
+         Capsule updates are not supported.
+      d. error-if-contains: "No EFI system partition" and "Failed to persist
+         EFI variables": EFI partition/variable persistence not supported due to
+         FVP reset.
+  2. acs_results/result.md:
+      a. must-contain "Failure: |0|": Capsule and EFI partition failures make
+         the total 20.
+  3. acs_results/CapsuleApp_ESRT_table_info.log:
+      a. capsuleapp-esrt: Capsule updates are not supported.
+      b. must-contain "'EFI_SYSTEM_RESOURCE_TABLE:'" and
+         "EFI_SYSTEM_RESOURCE_ENTRY": EFI partition/variable persistence not
+         supported due to FVP reset.
+      c. must-contain "FwClass": Capsule updates are not supported.
+      d. error-if-contains "ESRT - Not Found": Capsule updates are not
+         supported.
+  4. acs_results/CapsuleApp_FMP_protocol_info.log:
+      a. warn-if-contains "Aborted test": Capsule updates are not supported.
+         This patch also adds must-contain for the specific totals of the test
+         categories due to allowing the "Aborted test" string.
+  5. acs_results/linux_dump/firmware/efi/esrt:
+      a. Remove whole directory because capsule updates are not supported.
+  6. acs_results/uefi/temp:
+      a. Set min-entries to 0: this defaults to 1 despite the directory being
+         optional, so errors if a directory is empty.
+  7. acs_results/uefi_dump:
+      a. min-entries is 13: change this to 11 due to smbiosview.log being
+         optional and the change to make map.log optional.
+  8. acs_results/uefi_dump/dh.log:
+      a. must-contain "EFISystemPartition": EFI partition/variable persistence
+         not supported due to FVP reset.
+      b. must-contain "FirmwareManagement": Capsule updates are not supported.
+  9. acs_results/uefi_dump/map.log:
+      a. Make optional because it isn't populated for IR.
+  10. fw:
+      a. Make optional because capsule updates are not supported.
+  11. os-logs:
+      a. Make optional because distro installation isn't done as part of ACS.
+
+Changes to format-sr-results.yaml:
+  1. Remove the SIE section (not supported on fvp-base and, if present, causes
+     format-sr-results.py to error).
+
+Upstream-Status: Inappropriate
+Signed-off-by: Debbie Martin <Debbie.Martin@arm.com>
+---
+ check-sr-results.yaml  | 34 ++++++++++++++--------------------
+ format-sr-results.yaml | 15 ---------------
+ 2 files changed, 14 insertions(+), 35 deletions(-)
+
+diff --git a/check-sr-results.yaml b/check-sr-results.yaml
+index a4235de..555fb71 100644
+--- a/check-sr-results.yaml
++++ b/check-sr-results.yaml
+@@ -10,7 +10,6 @@ check-sr-results-configuration:
+ # The following tree applies to all ACS-IR 2.0 versions.
+ tree:
+   - file: acs-console.log
+-    must-have-esp:
+     must-contain:
+       - Booting `bbr/bsa'
+       - Press any key to stop the EFI SCT running
+@@ -24,8 +23,6 @@ tree:
+       - 'EFI stub: Booting Linux Kernel...'
+       - 'EFI stub: Using DTB from configuration table'
+       - Linux version
+-      - 'efi: ESRT=0x'
+-      - 'esrt: Reserving ESRT space from 0x'
+       - systemd
+       - Executing FWTS for EBBR
+       - 'Test: UEFI'
+@@ -36,13 +33,9 @@ tree:
+       - ACS run is completed
+       - Please press <Enter> to continue ...
+     warn-once-if-contains:
+-      - -dirty
+       - 'EFI stub: ERROR:'
+       - 'FIRMWARE BUG:'
+       - OVERLAP DETECTED
+-    error-if-contains:
+-      - No EFI system partition
+-      - Failed to persist EFI variables
+   - dir: acs_results
+     min-entries: 8  # Allow missing result.md
+     max-entries: 9
+@@ -53,7 +46,7 @@ tree:
+         must-contain:
+           - SCT Summary
+           - Dropped:|0|
+-          - Failure:|0|
++          - Failure:|20|
+           - Warning:|0|
+           - Dropped by group
+           - Failure by group
+@@ -64,16 +57,11 @@ tree:
+         max-entries: 2
+         tree:
+           - file: CapsuleApp_ESRT_table_info.log
+-            capsuleapp-esrt:
+             must-contain:
+               - ESRT TABLE
+-              - 'EFI_SYSTEM_RESOURCE_TABLE:'
+-              - EFI_SYSTEM_RESOURCE_ENTRY
+-              - FwClass
+             error-if-contains:
+               - FwResourceCount    - 0x0
+               - FwResourceCountMax - 0x0
+-              - ESRT - Not Found
+           - file: CapsuleApp_FMP_protocol_info.log
+             must-contain:
+               - FMP DATA
+@@ -95,9 +83,14 @@ tree:
+               - 'Medium failures: NONE'
+               - 'Low failures: NONE'
+               - 'Other failures: NONE'
++              - 'dt_base        |    3|     |     |     |     |     |'
++              - 'esrt           |     |     |    2|     |     |     |'
++              - 'uefibootpath   |     |     |     |     |     |     |'
++              - 'uefirtmisc     |    1|     |     |     |    8|     |'
++              - 'uefirttime     |    4|     |     |     |   35|     |'
++              - 'uefirtvariable |    2|     |     |     |   10|     |'
++              - 'uefivarinfo    |     |     |     |     |    1|     |'
+               - 'Total:'
+-            warn-if-contains:
+-              - Aborted test
+             error-if-contains:
+               - FAILED
+               - This is an invalid entry.
+@@ -180,6 +173,7 @@ tree:
+                     tree:
+                       - file: OsIndicationsSupported-*
+                   - dir: esrt
++                    optional:
+                     tree:
+                       - dir: entries
+                         tree:
+@@ -314,8 +308,9 @@ tree:
+               - BSA tests complete. Reset the system.
+           - dir: temp   # This sometimes remains; ignore it
+             optional:
++            min-entries: 0
+       - dir: uefi_dump
+-        min-entries: 13
++        min-entries: 11
+         max-entries: 13
+         tree:
+           - file: bcfg.log
+@@ -331,8 +326,6 @@ tree:
+             must-contain:
+               - Handle dump
+               - DevicePath
+-              - EFISystemPartition
+-              - FirmwareManagement
+               - SimpleTextOut
+           - file: dmem.log
+             must-contain:
+@@ -355,6 +348,7 @@ tree:
+               - DRIVER NAME
+           - file: ifconfig.log
+           - file: map.log
++            optional:
+             must-contain:
+               - Mapping table
+               - /HD(1,GPT,
+@@ -392,7 +386,7 @@ tree:
+   - dir: docs
+     optional:
+   - dir: fw
+-    min-entries: 3
++    optional:
+     tree:
+       - file: u-boot-sniff.log
+         must-contain:
+@@ -500,7 +494,7 @@ tree:
+   - dir: manual-results
+     optional:
+   - dir: os-logs
+-    min-entries: 2
++    optional:
+     tree:
+       - file: 'OS-image-download-links.txt'
+         optional:
+diff --git a/format-sr-results.yaml b/format-sr-results.yaml
+index dd34cd6..20b69de 100644
+--- a/format-sr-results.yaml
++++ b/format-sr-results.yaml
+@@ -47,21 +47,6 @@ subs:
+         extract:
+           filename: "acs_results/linux_dump/firmware/devicetree/base/psci/\
+             compatible"
+-  - heading: BBSR Compliance
+-    paragraph: TBD
+-    subs:
+-      - heading: SIE SCT
+-        extract:
+-          filename: acs_results/SIE/result.md
+-          find: '# SCT Summary'
+-          first-line: 4
+-          last-line:
+-        paragraph: TBD
+-      - heading: SIE FWTS
+-        extract:
+-          filename: acs_results/SIE/fwts/FWTSResults.log
+-          find: Test Failure Summary
+-        paragraph: TBD
+   - heading: BSA Compliance (informative)
+     paragraph: TBD
+     subs:
+--
+2.25.1
+
diff --git a/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/report.txt b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/report.txt
new file mode 100644
index 00000000..f4363b70
--- /dev/null
+++ b/meta-arm-bsp/dynamic-layers/meta-arm-systemready/recipes-test/arm-systemready-acs/files/fvp-base/report.txt
@@ -0,0 +1,34 @@ 
+General information
+-------------------
+- Arm SystemReady Band: IR
+- System name: FVP Base A AEM
+- Prepared by:
+- E-mail:
+- Date:
+
+System information
+------------------
+- Company: Arm
+- System: FVP Base A AEM
+- SoC:
+- FW version:
+- Memory:
+- Storage devices / disks:
+- Network controllers:
+- Other Hardware information:
+
+Test Logs and Results
+---------------------
+- ACS version used: 2.0
+- ACS URL (if pre-built binary): https://github.com/ARM-software/arm-systemready/blob/v23.03_IR_2.0.0/IR/prebuilt_images/v23.03_2.0.0/ir-acs-live-image-generic-arm64.wic.xz
+- Changes to ACS (if built from source):
+
+- Test Logs collected
+[X] ACS - SCT
+[X] ACS - BSA - UEFI
+[X] ACS - BSA - Linux
+[X] ACS - FWTS
+[X] ACS - Linux boot log
+[X] ACS - Linux dumps
+[X] ACS - UEFI Shell dumps
+[ ] ACS - Capsule Update
diff --git a/meta-arm-systemready/README.md b/meta-arm-systemready/README.md
new file mode 100644
index 00000000..ed0da1bf
--- /dev/null
+++ b/meta-arm-systemready/README.md
@@ -0,0 +1,126 @@ 
+# meta-arm-systemready Yocto Layer
+
+This layer contains classes and recipes for building and running
+[Arm SystemReady][] validation on the supported machines.
+
+Information regarding contributing, reporting bugs, etc can be found in the
+top-level meta-arm [README.md](../README.md) file.
+
+## Introduction
+
+This layer provides support for the following on supported machines:
+
+* Building the firmware for the [Arm SystemReady][] certification program
+* Running [Arm SystemReady ACS][] (Architecture Compliance Suite) tests
+* Running Linux distributions installation tests
+
+This layer is designed to work alongside with a BSP layer. For example, the
+[`meta-arm-bsp`][] layer in the top-level meta-arm defines the
+[`fvp-base`][] machine, which can be used with the recipes provided by this
+layer to build the firmware, run the [Arm SystemReady IR][] ACS tests, and
+run Linux distributions installation. **Note** that users can use this layer
+with their BSP layer to perform the same build and tests.
+
+### Firmware Build
+
+The `arm-systemready-firmware.bb` recipe is to build the firmware. It requires
+the `ARM_SYSTEMREADY_FIRMWARE` variable set at the MACHINE configuration level
+to list the build dependencies.
+
+### ACS Tests
+
+The recipe to run the ACS tests fetches and deploys the prebuilt ACS test suite
+disk image, and generates the necessary metadata to support executing the test
+suite using the bitbake `testimage` task. A test case `SystemReadyACSTest` is
+introduced in `lib/oeqa/runtime/cases` to monitor the ACS tests output from the
+bitbake `testimage` task. The `ARM_SYSTEMREADY_ACS_CONSOLE` variable must be set
+at the MACHINE configuration level for this test case.
+
+There are two additional recipes for generating the Arm SystemReady ACS tests
+report files through the use of the [EDK2 SCT Results Parser][] and the
+[Arm SystemReady scripts][]. These packages are installed in the
+`edk2-test-parser-native.bb` and `arm-systemready-scripts-native.bb` recipes
+respectively.
+
+The class `arm-systemready-acs.bbclass` implements the common logic to deploy
+the Arm SystemReady ACS prebuilt image and set up the `testimage` environment.
+This class also contains a `testimage` `"postfunc"` called `acs_logs_handle`
+which generates report files and analyzes the test results.
+
+The test result analysis is performed by first using the EDK2 SCT Results
+Parser to create a results.md file, then running the Arm SystemReady result
+check script to check the contents of the result partition as well as the
+console log. The result check will fail if any of the expected files or
+directories are missing, or if any file's contents do not pass its file-specific
+checks.
+
+The ACS test results which are checked by the script can be viewed in
+`${TMPDIR}/work/aarch64-oe-linux/arm-systemready-ir-acs/2.0.0-r0/testimage/`. If
+the check fails, the bitbake `testimage` task will fail.
+
+
+### Linux Distributions Installation
+
+Recipes for testing the installation of Linux distributions are provided under
+`recipes-test/arm-systemready-linux-distros`. These recipes help to download the
+installation CD for the Linux distribution and generate an empty disk as the
+target disk for the installation.
+
+## Supported Band and Machine
+
+Arm SystemReady has four bands:
+* [Arm SystemReady SR][]
+* [Arm SystemReady ES][]
+* [Arm SystemReady IR][]
+* [Arm SystemReady LS][]
+
+Currently, this layer only supports
+[Arm SystemReady IR ACS version v23.03_2.0.0][], which is verified on the
+[`fvp-base`][] machine.
+
+## Guidelines for Reusing and Extending
+
+Currently, this layer only supports the Arm SystemReady IR band running on the
+`fvp-base` machine defined in the `meta-arm-bsp` layer. The supported Arm
+SystemReady IR implementation can be reused on other machines. Furthermore, the
+current implementation can be further extended to support SR, ES and LS bands.
+
+### Reuse
+
+To reuse the supported Arm SystemReady IR on other machines, you will need to:
+
+1. Set the `ARM_SYSTEMREADY_FIRMWARE` variable at the MACHINE configuration
+   level to list the build dependencies. The configuration file of the
+   [`fvp-base`][] machine can be used as a reference.
+2. Set the `ARM_SYSTEMREADY_ACS_CONSOLE` variable at the MACHINE configuration
+   level for running the ACS tests in the bitbake `testimage` task. Also refer
+   to the configuration file of the [`fvp-base`][] machine.
+
+### Extend
+
+To extend support for other bands, you will need to:
+
+1. Add a new recipe to inherit `arm-systemready-acs.bbclass`. You can use
+   [`arm-systemready-ir-acs.bb`][] as a reference.
+2. Add a new `testimage` test case for the newly added band. Refer to
+   [`arm_systemready_ir_acs.py`][].
+3. Set the necessary variables and prepare the ACS baseline files (as listed in
+   the above **Reuse** section) at the MACHINE configuration level from the BSP
+   layer for the machine to be supported.
+
+**Note**: When reusing and extending, the current classes and libs may need to
+be modified or refactored as necessary.
+
+[Arm SystemReady]: https://www.arm.com/architecture/system-architectures/systemready-certification-program
+[Arm SystemReady ACS]: https://github.com/ARM-software/arm-systemready
+[Arm SystemReady SR]: https://www.arm.com/architecture/system-architectures/systemready-certification-program/sr
+[Arm SystemReady ES]: https://www.arm.com/architecture/system-architectures/systemready-certification-program/es
+[Arm SystemReady IR]: https://www.arm.com/architecture/system-architectures/systemready-certification-program/ir
+[Arm SystemReady LS]: https://www.arm.com/architecture/system-architectures/systemready-certification-program/ls
+[Arm SystemReady IR ACS version v23.03_2.0.0]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images/v23.03_2.0.0
+[Arm SystemReady scripts]: https://gitlab.arm.com/systemready/systemready-scripts
+[EDK2 SCT Results Parser]: https://gitlab.arm.com/systemready/edk2-test-parser
+[`arm-systemready-ir-acs.bb`]: recipes-test/arm-systemready-acs/arm-systemready-ir-acs.bb
+[`arm_systemready_ir_acs.py`]: lib/oeqa/runtime/cases/arm_systemready_ir_acs.py
+[`meta-arm-bsp`]: ../meta-arm-bsp
+[`fvp-base`]: ../meta-arm-bsp/conf/machine/fvp-base.conf