diff --git a/docs/systemready_band_flow.md b/docs/systemready_band_flow.md new file mode 100644 index 00000000..820efd59 --- /dev/null +++ b/docs/systemready_band_flow.md @@ -0,0 +1,403 @@ +# SystemReady Band ACS Automation Flow + +## Overview + +This document explains the automation flow of the **Arm SystemReady Band ACS** image. + +The SystemReady Band ACS image is a bootable validation environment used to run firmware, UEFI, Linux, architecture, and compliance test suites on Arm SystemReady platforms. + +The automation flow covers: + +- Image validations +- SystemReady Band ACS Automation Flow +- GRUB Boot Menu Options +- Configuration Files +- Result Collection + +--- + +## What the SR Image Validates + +| Validation Area | Tools / Test Suites | +|---|---| +| Firmware compliance | SCT, SCRT, FWTS | +| Base system architecture | BSA | +| Server architecture | SBSA | +| Secure Boot compliance | BBSR | +| Manageability checks | SBMR | +| Linux-side validation | Linux scripts and test tools | +| Result reporting | ACS log parser and waiver flow | + +--- + +## SystemReady Band ACS Automation Flow + +This section explains the end-to-end automation flow for the SystemReady Band ACS image. + +The flow is divided into two parts: + +1. **Build Automation Flow** — how the ACS image is prepared and generated. +2. **Run Automation Flow** — what happens when the ACS image boots on the platform. + +--- +### SR Build Automation Flow + +Commands executed from **arm-systemready/SystemReady-band/**: + +```text +./build-scripts/get_source.sh +./build-scripts/build-systemready-band-live-image.sh +``` + +```mermaid +%%{init: { + "theme": "base", + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart TD + + linkStyle default stroke:#2563eb,stroke-width:4px; + + Start((Start)) --> B["Run get_source.sh"] + B --> C["Fetches ACS and dependent sources"] + C --> D["Prepares common configs and scripts"] + D --> E["Applies required patches"] + + E --> F["Run build-systemready-band-live-image.sh"] + + F --> G1["Builds UEFI components"] + F --> G2["Builds Linux kernel"] + F --> G3["Builds Buildroot ramdisk"] + F --> G4["Builds ACS test binaries"] + F --> G5["Builds parser/helper tools"] + + G1 --> H["Packages SR ACS image"] + G2 --> H + G3 --> H + G4 --> H + G5 --> H + + H --> I["Adds EFI boot files"] + I --> J["Adds ACS test content"] + J --> K["Adds Linux Image and ramdisk"] + K --> L["Adds config and result directories"] + L --> M["Generates compressed SR ACS image"] + M --> End((End)) + + classDef startEnd fill:#ffffff,stroke:#0f172a,stroke-width:3px,color:#0f172a; + classDef manualRun fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef source fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef build fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef package fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef output fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class Start,End startEnd; + class B,F manualRun; + class C,D,E source; + class G1,G2,G3,G4,G5 build; + class H,I,J,K,L package; + class M output; +``` +--- +## SR Runtime Flowcharts +- These diagrams show the high-level runtime automation flow. +- **Reboot handling:** Some test suites intentionally reset the platform after saving results. After reset, the platform returns to **GRUB** and resumes from the next pending stage. Completed suites are skipped using result logs or state. +--- +### 1. Runtime Entry Flow + +> By default, **SystemReady band ACS (Automation)** is selected and the full automation flow is executed. +> Click a boot option box to jump to the corresponding flow section in GitHub. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 35, + "rankSpacing": 45 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["GRUB
Menu"] --> B{"Boot
option"} + + B --> C["SystemReady
band ACS
Automation"] + B --> D["Linux
Boot"] + B --> E["BBSR
Compliance
Automation"] + + click C "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemready_band_flow.md#2-systemready-band-acs-automation-flow" "Go to SystemReady band ACS Automation Flow" + click D "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemready_band_flow.md#3-linux-automation-flow" "Go to Linux Automation Flow" + click E "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemready_band_flow.md#4-bbsr-automation-flow" "Go to BBSR Automation Flow" + + classDef grub fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef decision fill:#ffffff,stroke:#2563eb,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef bbsr fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + + class A grub; + class B decision; + class C uefi; + class D linux; + class E bbsr; +``` + +--- + +### 2. SystemReady band ACS Automation Flow + +> This flow is executed when **SystemReady band ACS (Automation)** is selected from GRUB. + +##### UEFI ACS Flow + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 25, + "rankSpacing": 35 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["• SCT
• SCRT"] + A --> B["• Capsule
info dump
• UEFI
debug dump"] + + B --> C["BSA
UEFI"] + C --> R1["Reset"] + + R1 -->|"SBSA enabled"| D["SBSA
UEFI"] + R1 -->|"SBSA not enabled"| E["Go to
ACS Linux"] + + D --> R2["Reset"] + R2 --> E + + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef reboot fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + + class A,B,C,D uefi; + class R1,R2 reboot; + class E linux; +``` + +
+ +**➡️ Continues with ACS Linux flow** + +
+ +##### Linux ACS Flow + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 30, + "rankSpacing": 40 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["ACS
Linux"] + A --> B["• Linux
debug dump
• Device driver
info"] + B --> C["FWTS"] + + C --> D["BSA
Linux"] + + C -->|"SBMR enabled"| E["SBMR
in-band"] + E --> D + + D --> F["• EDK2
test parser
• Post
scripts"] + + D -->|"SBSA enabled"| G["SBSA
Linux"] + G --> F + + F --> H["ACS log parser

(apply waivers
if configured)"] + H --> I["Print
ACS summary"] + + classDef entry fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A entry; + class B,C,D,E,G linux; + class F,H,I result; +``` + +--- + +### 3. Linux Automation Flow + +> This flow is executed either after **SystemReady band ACS (Automation)** completes the UEFI phase, or directly when **Linux Boot** is selected from GRUB. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 30, + "rankSpacing": 40 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["ACS Linux
Initialization"] + A --> B["• Linux
debug dump
• Device driver
info"] + B --> C["FWTS"] + + C --> D["BSA
Linux"] + + C -->|"SBMR enabled"| E["SBMR
in-band"] + E --> D + + D --> F["• EDK2
test parser
• Post
scripts"] + + D -->|"SBSA enabled"| G["SBSA
Linux"] + G --> F + + F --> H["ACS log parser

(apply waivers
if configured)"] + H --> I["Print
ACS summary"] + + classDef entry fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A entry; + class B,C,D,E,G linux; + class F,H,I result; +``` + +--- + +### 4. BBSR Automation Flow + +> If Secure Boot keys are not provisioned automatically, provision the keys manually and then run the BBSR automation again. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 30, + "rankSpacing": 40 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["BBSR
Compliance
Automation"] + A --> B{"Secure Boot
enabled?"} + + B -->|"yes"| D["BBSR
UEFI / SCT
flow"] + B -->|"no"| C["Provision
Secure Boot
keys"] + + C --> D + + D --> E["Secure
Linux boot"] + E --> F["Collect
BBSR logs

(FWTS / TPM)"] + F --> G["ACS log parser

BBSR summary"] + + classDef bbsr fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef decision fill:#ffffff,stroke:#2563eb,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A,C,D bbsr; + class B decision; + class E,F linux; + class G result; +``` +--- +## GRUB Boot Menu Options + +| Boot Option | Purpose | +|---|---| +| `Linux Boot` | Boots ACS Linux environment | +| `SystemReady band ACS (Automation)` | Runs the complete automated SR compliance flow | +| `BBSR Compliance (Automation)` | Runs Secure Boot / BBSR compliance flow | +| `UEFI Execution Environment` | Provides manual UEFI shell execution environment | +| `Linux Execution Environment` | Provides manual Linux-side execution environment | +| `Linux Boot with SetVirtualAddressMap enabled` | Debug or special Linux boot option | +--- + +## Configuration Files + +| File | Description | +|---|---| +|[`acs_config.txt`](../common/config/acs_config.txt) | Contains ACS and specification version information | +|[`acs_run_config.init`](../common/config/acs_run_config.ini) | Enables or disables test suites and passes test arguments | +|[`system_config.txt`](../common/config/system_config.txt) | Contains platform details used in the final ACS report | + +--- +## Result Collection + +ACS logs and summaries are stored under: +```text +acs_results_template/acs_results/ +``` + +Final parsed reports are generated under: +```text +acs_results_template/acs_results/acs_summary/ +``` +-------------- +*Copyright (c) 2026, Arm Limited and Contributors. All rights reserved.* diff --git a/docs/systemready_devicetree_band_flow.md b/docs/systemready_devicetree_band_flow.md new file mode 100644 index 00000000..44cfbc49 --- /dev/null +++ b/docs/systemready_devicetree_band_flow.md @@ -0,0 +1,544 @@ +# SystemReady Devicetree Band ACS Automation Flow + +## Overview + +This document explains the automation flow of the **Arm SystemReady Devicetree Band ACS** image. + +The SystemReady Devicetree Band ACS image is a bootable validation environment used to run firmware, UEFI, Linux, Devicetree, architecture, network, capsule update, and compliance test suites on Arm SystemReady Devicetree platforms. + +The automation flow covers: + +- Image validations +- SystemReady Devicetree Band ACS Automation Flow +- GRUB Boot Menu Options +- Configuration Files +- Result Collection + +--- + +## What the DT Image Validates + +| Validation Area | Tools / Test Suites | +|---|---| +| Firmware compliance | SCT, FWTS | +| Base system architecture | BSA | +| Platform firmware/device interface | PFDI | +| Secure Boot compliance | BBSR | +| Devicetree validation | DT validation tools, DT parser, DT kernel selftests | +| Linux device visibility | Device driver information script | +| Network validation | UEFI ping test, HTTPS/network boot, Ethernet checks | +| Block device validation | Block device read/write checks | +| Capsule update | Capsule update scripts and UEFI apps | +| Result reporting | EDK2 test parser, ACS log parser, waiver flow | + +--- + +## SystemReady Devicetree Band ACS Automation Flow + +This section explains the end-to-end automation flow for the SystemReady Devicetree Band ACS image. + +The flow is divided into two parts: + +1. **Build Automation Flow** — how the DT ACS image is prepared and generated. +2. **Run Automation Flow** — what happens when the DT ACS image boots on the platform. + +--- +### DT Build Automation Flow + +Commands executed from **arm-systemready/SystemReady-devicetree-band/Yocto/**: + +```text +./build-scripts/get_source.sh +./build-scripts/build-systemready-dt-band-live-image.sh +``` + +```mermaid +%%{init: { + "theme": "base", + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart TD + + linkStyle default stroke:#2563eb,stroke-width:4px; + + Start((Start)) --> B["Run get_source.sh"] + B --> C["Fetches Yocto layers and ACS sources"] + C --> D["Prepares DT configs and common scripts"] + D --> E["Applies required patches"] + + E --> F["Run build-systemready-dt-band-live-image.sh"] + + F --> G1["Builds Linux kernel"] + F --> G2["Builds initramfs"] + F --> G3["Builds Yocto root filesystem"] + F --> G4["Builds ACS test binaries"] + F --> G5["Builds parser/helper tools"] + F --> G6["Includes DT validation tools"] + + G1 --> H["Packages DT ACS image"] + G2 --> H + G3 --> H + G4 --> H + G5 --> H + G6 --> H + + H --> I["Adds EFI boot files"] + I --> J["Adds BBR/SCT test content"] + J --> K["Adds BSA and PFDI UEFI apps"] + K --> L["Adds capsule update and HTTPS boot scripts"] + L --> M["Adds Linux Image, initramfs and rootfs"] + M --> N["Adds config and result template directories"] + N --> O["Generates compressed DT ACS image"] + O --> End((End)) + + classDef startEnd fill:#ffffff,stroke:#0f172a,stroke-width:3px,color:#0f172a; + classDef manualRun fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef source fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef build fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef package fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef output fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class Start,End startEnd; + class B,F manualRun; + class C,D,E source; + class G1,G2,G3,G4,G5,G6 build; + class H,I,J,K,L,M,N package; + class O output; +``` +--- +## DT Runtime Flowcharts +- These diagrams show the high-level runtime automation flow for the **SystemReady Devicetree Band ACS** image. +- Some flows reset the platform after saving state or results. After reset, the platform returns to **GRUB** and resumes the next pending step using logs/state files. + +--- +### 1. Runtime Entry Flow +> By default, **bbr/bsa ACS (Automation)** is selected and the full DT automation flow is executed. +> Click a boot option box to jump to the corresponding flow section in GitHub. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 35, + "rankSpacing": 45 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["GRUB
Menu"] --> B{"Boot
option"} + B --> C["bbr/bsa
ACS
Automation"] + B --> D["Linux
Boot"] + B --> E["BBSR
Compliance
Automation"] + + click C "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#2-bbrbsa-acs-automation-flow" "Go to bbr/bsa ACS Automation Flow" + click D "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#3-linux-automation-flow" "Go to Linux Automation Flow" + click E "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#4-bbsr-automation-flow" "Go to BBSR Automation Flow" + + classDef grub fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef decision fill:#ffffff,stroke:#2563eb,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef bbsr fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + class A grub; + class B decision; + class C uefi; + class D linux; + class E bbsr; +``` +--- + +### 2. bbr/bsa ACS Automation Flow + +> This flow is executed when **bbr/bsa ACS (Automation)** is selected from GRUB. +##### UEFI ACS Flow + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 25, + "rankSpacing": 35 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["• SCT
• SCRT"] + A --> B["• Capsule
info dump
• UEFI
debug dump"] + + B --> C["BSA
UEFI"] + C --> R1["Reset"] + + R1 --> D["PFDI
UEFI"] + D --> R2["Reset"] + + R2 --> E["UEFI
ping test"] + E --> F["Go to
ACS Linux"] + + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef reboot fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + + class A,B,C,D,E uefi; + class R1,R2 reboot; + class F linux; +``` + +
+ +**➡️ Continues with ACS Linux flow** + +
+ +##### Linux ACS Flow + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 30, + "rankSpacing": 40 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["ACS
Linux"] + + A --> B["• Linux
debug dump
• Device driver
info"] + B --> C["FWTS"] + C --> D["BSA
Linux"] + + D --> E["• Devicetree
validation
• PSCI
collection"] + + E --> F["• DT kernel
selftest
• Runtime
mapping check"] + + F --> G["• Ethernet /
network test
• Block device
check"] + + G --> H["Network boot
flow

(if configured)"] + H --> I["Capsule
update flow"] + + I --> J["ACS log parser

(apply waivers
if configured)"] + J --> K["Print
ACS summary"] + + click H "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#network-boot" "Go to Network Boot Flow" + click I "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#capsule-update-flow" "Go to Capsule Update Flow" + + classDef entry fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef optional fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A entry; + class B,C,D,E,F,G,I linux; + class H optional; + class J,K result; +``` + +#### Capsule Update Flow + +> Linux starts capsule update validation and resets into UEFI. UEFI runs the capsule update flow. +> If a capsule is applied, the platform may reset again as part of firmware update handling. Linux parses the result on the next boot. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 25, + "rankSpacing": 35 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["Linux
capsule check"] + A --> R1["Reset"] + + R1 --> B["UEFI
capsule update
flow"] + B --> R2["Reset

(if firmware
update applies)"] + B --> C["Continue
boot flow"] + + R2 --> C + C --> D["Boot back
to Linux"] + D --> E["Parse capsule
update result"] + + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef reboot fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A,D linux; + class B,C uefi; + class R1,R2 reboot; + class E result; +``` + +#### Network Boot + +> This flow runs only when **HTTPS_BOOT_IMAGE_URL** is configured in [`system_config_dt.txt`](../common/config/system_config_dt.txt). + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 25, + "rankSpacing": 35 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["Linux
pre-boot
checks"] + A --> R1["Reset"] + + R1 --> B["UEFI
network boot
flow"] + B --> R2["Reset"] + + R2 --> C["U-Boot
HTTP/HTTPS
BootNext"] + + subgraph MIN["ACS Minimal Image"] + direction LR + D["Boot minimal
network image"] + D --> E["Collect
network boot
logs"] + E --> R3["Reset"] + end + + C --> D + R3 --> F["Boot back
to ACS Linux"] + F --> G["Parse network
boot result"] + + classDef optional fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef reboot fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A,C,D,E optional; + class B uefi; + class R1,R2,R3 reboot; + class F linux; + class G result; + + style MIN fill:#fff7ed,stroke:#d97706,stroke-width:3px,color:#0f172a; +``` +--- +### 3. Linux Automation Flow + +> This flow is executed either after **bbr/bsa ACS (Automation)** completes the UEFI phase, or directly when **Linux Boot** is selected from GRUB. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 30, + "rankSpacing": 40 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["ACS Linux
initialization"] + + A --> B["• Linux
debug dump
• Device driver
info"] + B --> C["FWTS"] + C --> D["BSA
Linux"] + + D --> E["• Devicetree
validation
• PSCI
collection"] + + E --> F["• DT kernel
selftest
• Runtime
mapping check"] + + F --> G["• Ethernet /
network test
• Block device
check"] + + G --> H["Network boot
flow

(if configured)"] + H --> I["Capsule
update flow"] + + I --> J["ACS log parser

(apply waivers
if configured)"] + J --> K["Print
ACS summary"] + + click H "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#network-boot" "Go to Network Boot Flow" + click I "https://github.com/ARM-software/arm-systemready/blob/main/docs/systemredy_devicetree_band_flow.md#capsule-update-flow" "Go to Capsule Update Flow" + + classDef entry fill:#dbeafe,stroke:#1d4ed8,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef optional fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A entry; + class B,C,D,E,F,G,I linux; + class H optional; + class J,K result; +``` +--- +### 4. BBSR Automation Flow + +> - This flow is executed when **BBSR Compliance (Automation)** is selected from GRUB. +> - Secure Boot key provisioning is attempted automatically. If automatic provisioning does not complete, provision the keys manually and run the BBSR automation again. +> - In DT band, after BBSR logs and summary are generated, Secure Boot is cleared before returning to the Linux prompt. + +```mermaid +%%{init: { + "theme": "base", + "flowchart": { + "curve": "linear", + "nodeSpacing": 25, + "rankSpacing": 35 + }, + "themeVariables": { + "fontFamily": "Arial", + "fontSize": "14px", + "primaryBorderColor": "#0f172a", + "lineColor": "#2563eb", + "tertiaryColor": "#ffffff" + } +}}%% + +flowchart LR + + linkStyle default stroke:#2563eb,stroke-width:4px; + + A["BBSR
Compliance
Automation"] + A --> B{"Secure Boot
enabled?"} + + B -->|"yes"| D["BBSR
UEFI / SCT
flow"] + B -->|"no"| C["Provision
Secure Boot
keys"] + + C --> D + + D --> E["Secure
Linux boot"] + E --> F["Collect
BBSR logs

(FWTS / TPM)"] + F --> G["ACS log parser

BBSR summary"] + + G --> H{"Secure Boot
still enabled?"} + + H -->|"yes"| R1["Reset"] + R1 --> I["UEFI clears
PK"] + I --> R2["Reset"] + R2 --> J["Boot Linux
terminal / prompt"] + + H -->|"no"| J + + classDef bbsr fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#0f172a; + classDef decision fill:#ffffff,stroke:#2563eb,stroke-width:3px,color:#0f172a; + classDef linux fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#0f172a; + classDef reboot fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#0f172a; + classDef uefi fill:#ffedd5,stroke:#ea580c,stroke-width:3px,color:#0f172a; + classDef result fill:#ede9fe,stroke:#7c3aed,stroke-width:3px,color:#0f172a; + + class A,C,D bbsr; + class B,H decision; + class E,F,J linux; + class G result; + class R1,R2 reboot; + class I uefi; +``` +--- + +## GRUB Boot Menu Options + +| Boot Option | Purpose | +|---|---| +| `Linux Boot` | Boots Yocto Linux environment | +| `bbr/bsa` | Runs the main automated DT compliance flow | +| `BBSR Compliance (Automation)` | Runs Secure Boot / BBSR compliance flow | + +--- + +## Configuration Files + +| File | Description | +|---|---| +|[`acs_config.txt`](../common/config/acs_config.txt) | Contains ACS and specification version information | +|[`system_config.txt`](../common/config/system_config.txt) | Contains platform details used in the final ACS report | +|[`acs_config_dt.txt`](../common/config/acs_config_dt.txt) | DT-specific ACS configuration template | +|[`system_config_dt.txt`](../common/config/system_config_dt.txt)| DT-specific system configuration template | + +Important DT-related configuration fields: + +| Field | Description | +|---|---| +| `Total_number_of_network_controllers` | Number of network controllers expected for validation | +| `HTTPS_BOOT_IMAGE_URL` | URL used for HTTPS/network boot validation | + +--- + +## Result Collection + +DT ACS logs and summaries are stored under: +```text +acs_results_template/acs_results/ +``` + +Final parsed reports are generated under: +```text +acs_results_template/acs_results/acs_summary/ +``` +-------------- +*Copyright (c) 2026, Arm Limited and Contributors. All rights reserved.* +