You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 20, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+53-53Lines changed: 53 additions & 53 deletions
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
## Base System Architecture
5
5
**Base System Architecture** (BSA) specification describes a hardware system architecture based on the Arm 64-bit architecture. System software such as operating systems, hypervisors, and firmware rely on this. It addresses PE features and key aspects of system architecture.
6
6
7
-
For more information, download the[BSA specification](https://developer.arm.com/documentation/den0094/latest)
7
+
For more information, see[BSA specification](https://developer.arm.com/documentation/den0094/latest)
8
8
9
9
10
10
## BSA - Architecture Compliance Suite
@@ -16,35 +16,49 @@ A few tests are executed by running the BSA ACS Linux application which in turn
16
16
17
17
18
18
## Release details
19
-
- Code quality: v0.5 Alpha
19
+
- Code quality: v0.9 Beta
20
20
- The tests are written for version 1.0 of the BSA specification.
21
21
- The compliance suite is not a substitute for design verification.
22
22
- To review the BSA ACS logs, Arm licensees can contact Arm directly through their partner managers.
23
23
24
24
25
25
## GitHub branch
26
-
- To pick up the release version of the code, checkout the coresponding tag from main branch.
26
+
- To pick up the release version of the code, checkout the corresponding tag from the main branch.
27
27
- To get the latest version of the code with bug fixes and new features, use the main branch.
28
28
29
29
## Additional reading
30
-
- For information on the test scenarios currently implemented for IR, see [Scenario Document](docs/Arm_Base_System_Architecture_Scenario_IR.pdf).
30
+
- For information on the test scenarios currently implemented for platform using Device tree, see [Scenario Document](docs/Arm_Base_System_Architecture_Scenario_IR.pdf).
31
+
- For information on the test scenarios currently implemented for platform using ACPI table, see [Scenario Document](docs/Arm_Base_System_Architecture_Scenario_ES.pdf).
31
32
32
33
## ACS build steps - UEFI Shell application
33
34
34
35
### Prebuilt images
35
36
Prebuilt images for each release are available in the prebuilt_images folder of the release branch. You can choose to use these images or build your own image by following the steps below. If you choose to use the prebuilt image, see the Test suite execution section below for details on how to run the application.
36
37
37
-
### Prerequisites
38
+
### 1. Building from source
38
39
Before you start the ACS build, ensure that the following requirements are met.
39
40
40
41
- Any mainstream Linux-based OS distribution running on a x86 or AArch64 machine.
41
42
- git clone the edk2-stable202102 tag of [EDK2 tree](https://github.com/tianocore/edk2).
42
43
- git clone the [EDK2 port of libc](https://github.com/tianocore/edk2-libc) to local <edk2_path>.
43
-
-Install GCC 7.5 or a later toolchain for Linux from [here](https://releases.linaro.org/components/toolchain/binaries/).
44
+
- GCC 7.5 or a later toolchain for Linux from [here](https://releases.linaro.org/components/toolchain/binaries/).
44
45
- Install the build prerequisite packages to build EDK2.
45
46
Note: The details of the packages are beyond the scope of this document.
46
47
47
-
To start the ACS build for IR, perform the following steps:
48
+
#### 1.1 Target Platform
49
+
##### To start the ACS build for platform using ACPI table, perform the following steps:
If the build environment is Linux, perform the following steps:
81
+
#### 1.2 Build environment
82
+
##### If the build environment is Linux, perform the following steps:
69
83
1. export GCC49_AARCH64_PREFIX= GCC7.5 toolchain path pointing to /bin/aarch64-linux-gnu- in case of x86 machine. For an AArch64 build it should point to /usr/bin/
70
84
2. export PACKAGES_PATH= path pointing to edk2-libc
The EFI executable file is generated at <edk2_path>/Build/Shell/DEBUG_GCC49/AARCH64/Bsa.efi
78
92
79
93
80
-
## Test suite execution
94
+
### 2. Test suite execution
81
95
82
96
The execution of the compliance suite varies depending on the test environment. The below steps assume that the test suite is invoked through the ACS UEFI shell application.
83
97
84
98
85
-
### Prerequisites
99
+
####Prerequisites
86
100
- If the system supports LPIs (Interrupt ID > 8192) then Firmware should support installation of handler for LPI interrupts.
87
101
- If you are using edk2, change the ArmGic driver in the ArmPkg to support installation of handler for LPIs.
88
102
- Add the following in edk2/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
@@ -92,7 +106,8 @@ The execution of the compliance suite varies depending on the test environment.
On a system where a USB port is available and functional, perform the following steps:
97
112
98
113
#### For IR Systems:
@@ -111,12 +126,13 @@ On a system where a USB port is available and functional, perform the following
111
126
9. Copy the UART console output to a log file.
112
127
Note: 'Shell.efi' is available in the [pebuilt_images/IR](prebuilt_images)
113
128
114
-
### Emulation environment with secondary storage
129
+
#### 2.2 Emulation environment with secondary storage
115
130
On an emulation environment with secondary storage, perform the following steps:
116
131
117
132
1. Create an image file which contains the 'Bsa.efi' file. For example:
118
133
- mkfs.vfat -C -n HD0 hda.img 2097152
119
-
- sudo mount -o rw,loop=/dev/loop0,uid=`whoami`,gid=`whoami` hda.img /mnt/bsa
134
+
- sudo mount -o rw,loop=/dev/loop0,uid=\`whoami\`,gid=\`whoami\` hda.img /mnt/bsa
135
+
In case loop0 is busy, please specify the one that is free.
120
136
- sudo cp "<pathtoapplication>/Bsa.efi" /mnt/bsa/
121
137
- sudo umount /mnt/bsa
122
138
2. Load the image file to the secondary storage using a backdoor. The steps to load the image file are emulation environment-specific and beyond the scope of this document.
@@ -126,8 +142,10 @@ On an emulation environment with secondary storage, perform the following steps:
126
142
6. To start the compliance tests, run the executable Bsa.efi with the appropriate parameters.
127
143
7. Copy the UART console output to a log file for analysis and certification.
128
144
145
+
- For information on the BSA uefi shell application parameters, see [User Guide](docs/Arm_Base_System_Architecture_Compliance_User_Guide.pdf).
146
+
129
147
130
-
### Emulation environment without secondary storage
148
+
#### 2.3 Emulation environment without secondary storage
131
149
132
150
On an emulation platform where secondary storage is not available, perform the following steps:
133
151
@@ -139,81 +157,63 @@ On an emulation platform where secondary storage is not available, perform the f
139
157
140
158
141
159
## Linux OS-based tests
142
-
Certain Peripheral, PCIe and Memory map tests require Linux operating system with kernel version 5.10 or above.
160
+
Certain Peripheral, PCIe and Memory map tests require Linux operating system with kernel version 5.11 or above.
143
161
This chapter provides information on executing tests from the Linux application.
144
162
145
-
### Build steps and environment setup
163
+
### 1. Build steps and environment setup
146
164
This section lists the porting and build steps for the kernel module.
147
-
The patch for the kernel tree and the Linux PAL are hosted separately on [linux-acs](https://gitlab.arm.com/linux-arm/linux-acs) repo
165
+
The patch for the kernel tree and the Linux PAL are hosted separately on [linux-acs](https://git.gitlab.arm.com/linux-arm/linux-acs.git) repo
Run the Linux application with the following set of arguments
179
-
```sh
180
-
shell> bsa [--v <n>] [--skip <x,y,z>]
181
-
```
182
194
183
-
| Argument | Description |
184
-
| ------ | ------ |
185
-
| v | Print level |
186
-
|| 1. INFO and above|
187
-
|| 2. DEBUG and above|
188
-
|| 3. TEST and above|
189
-
|| 4. WARN and ERROR|
190
-
|| 5. ERROR|
191
-
|||
192
-
| skip | Overrides the suite to skip the execution of a particular test.
193
-
|| For example, 53 skips test case with ID 53.|
194
-
195
-
### Example
196
-
```sh
197
-
shell> bsa --v 3 --skip 53
198
-
```
199
-
This set of parameters tests for compliance against BSA with print verbosity set to 3, and skips test number 53.
195
+
Successfull completion of above steps will generate executable file bsa
200
196
201
-
### Loading the kernel module
197
+
### 2. Loading the kernel module
202
198
Before the BSA ACS Linux application can be run, load the BSA ACS kernel module using the insmod command.
203
199
```sh
204
200
shell> insmod bsa_acs.ko
205
201
```
206
202
207
-
### Running BSA ACS
203
+
### 3. Running BSA ACS
208
204
```sh
209
205
shell> ./bsa
210
206
```
207
+
- For information on the BSA Linux application parameters, see [User Guide](docs/Arm_Base_System_Architecture_Compliance_User_Guide.pdf).
211
208
212
209
## Security implication
213
210
The Arm System Ready ACS test suite may run at a higher privilege level. An attacker may utilize these tests to elevate the privilege which can potentially reveal the platform security assets. To prevent the leakage of secure information, Arm strongly recommends that you run the ACS test suite only on development platforms. If it is run on production systems, the system should be scrubbed after running the test suite.
214
211
215
212
## Limitations
216
-
No known limitations.
213
+
214
+
- PCIE iEP rules are out of scope for current release.
215
+
- ITS rules are available only for systems that present firmware compliant to SBBR.
216
+
- Peripheral rules RB_PER_01,02,03 are not implemented in current release for systems that present firmware compliant to EBBR.
0 commit comments