mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-05-07 04:58:57 +00:00
arm-bsp/systemready: Bring up the Arm SystemReady IR ACS 2.0 suite on FVP base
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> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -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 \
|
||||
"
|
||||
|
||||
@@ -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] ?= ""
|
||||
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
FILESEXTRAPATHS:append := "${THISDIR}/files/${MACHINE}:"
|
||||
SRC_URI:append = " file://report.txt"
|
||||
+1
@@ -0,0 +1 @@
|
||||
include arm-systemready-ir-acs-${MACHINE}.inc
|
||||
+5
@@ -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 \
|
||||
"
|
||||
+1
@@ -0,0 +1 @@
|
||||
include arm-systemready-scripts-native-${MACHINE}.inc
|
||||
+227
@@ -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
|
||||
|
||||
+34
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user