Skip to content

Commit 669cb25

Browse files
rajatgoyal47chetan-rathore
authored andcommitted
docs(mpam): README Changes & expand test scenario algorithms
- README Updates. - add/adjust Register, Cache, Monitor, Error, and Memory test listings - Add new tests algorithms. - align overflow/MSI/error handling steps with implementation details Signed-off-by: Rajat Goyal <rajat.goyal@arm.com> Change-Id: Ifeb59a5e3aa3b24556b1f555c5a3d44c2fee54ee
1 parent f64c3ab commit 669cb25

4 files changed

Lines changed: 929 additions & 90 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Validates platform compliance with Arm MPAM system component specification.
8787

8888
| Version | Code Quality | Prebuilt Binary | Spec Reference |
8989
|---------|--------------|-----------------|---------------------|
90-
| v0.5.0 | ALP | [Mpam.efi](https://github.com/ARM-software/bsa-acs/tree/main/prebuilt_images/MPAM/v25.03_MPAM_0.5.0_ALP) | [MPAM system component 1.1](https://developer.arm.com/documentation/den0094/d/?lang=en) |
90+
| v0.5.0 | ALP | [Mpam.efi](https://github.com/ARM-software/bsa-acs/tree/main/prebuilt_images/MPAM/v25.03_MPAM_0.5.0_ALP) | [MPAM system component A.a](https://developer.arm.com/documentation/ihi0099/aa/?lang=en) |
9191

9292
#### Reference for Build, Execution, and More
9393
Refer to the [MPAM ACS README](docs/mpam/README.md) for detailed build steps, execution procedures, additional information, and known limitations.

docs/mpam/README.md

Lines changed: 106 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,109 @@
1-
2-
# MPAM System Component Specification - Architecture Compliance Suite
3-
4-
## Memory System Resource Partitioning and Monitoring
5-
**Memory System Resource Partitioning and Monitoring** (MPAM) System Component specification describes propagation of a Partition ID (PARTID) and Performance Monitoring Group (PMG) through the memory system, a framework for memory-system component (MSC) controls that partition one or more of the performance resources of the component.
6-
7-
For more information, download the [MPAM System Component Specification](https://developer.arm.com/documentation/ihi0099/latest/).
1+
## Table of Contents
2+
3+
- [MPAM Memory System Component Specification](#mpam-memory-system-component-specification)
4+
- [SYS-MPAM Architecture Compliance Suite](#sys-mpam-architecture-compliance-suite)
5+
- [Release details](#release-details)
6+
- [Documentation & Guides](#documentation-and-guides)
7+
- [SYS-MPAM build steps](#sys-mpam-build-steps)
8+
- [UEFI Shell application](#uefi-shell-application)
9+
- [SYS-MPAM run steps](#sys-mpam-run-steps)
10+
- [For UEFI application](#for-uefi-application)
11+
- [Application arguments](#application-arguments)
12+
- [Limitations](#limitations)
13+
- [Feedback, contributions and support](#feedback-contributions-and-support)
14+
- [License](#license)
15+
16+
## MPAM Memory System Component Specification
17+
**Memory System Resource Partitioning and Monitoring (MPAM)** describes
18+
propagation of Partition ID (PARTID) and Performance Monitoring Group (PMG)
19+
through the memory system, along with controls that partition performance
20+
resources of a memory-system component (MSC).
21+
22+
For more information, download the
23+
[MPAM System Component Specification](https://developer.arm.com/documentation/ihi0099/aa/).
24+
25+
## SYS-MPAM Architecture Compliance Suite
26+
27+
The SYS-MPAM **Architecture Compliance Suite (ACS)** is a collection of
28+
self-checking, portable C-based tests.
29+
This suite provides examples of the invariant behaviors defined in the MPAM
30+
System Component specification, enabling verification that these behaviors have
31+
been implemented and interpreted correctly.
832

933
## Release details
10-
- Code Quality: Alpha
11-
- The tests are written for version A.a of the MPAM Memory System Component Specification.
12-
- For more details on tests implemented in this release, Please refer [MPAM Test Scenario Document](arm_mpam_architecture_compliance_test_scenario.pdf).
13-
14-
## Downloading MPAM ACS
15-
16-
MPAM ACS code is present in the sysarch-acs repository.
17-
18-
- git clone https://github.com/ARM-software/sysarch-acs.git <br/>
19-
- cd sysarch-acs <br/>
20-
21-
## Building MPAM ACS
22-
### UEFI application
23-
#### Prerequisites
34+
- **Code quality:** Beta
35+
- **Latest release version:** v0.7.0
36+
- **Release tag:** `v26.03_MPAM_0.7.0`
37+
- **Specification coverage:** MPAM Memory System Component Specification vA.a
38+
- **Scope:** The compliance suite is **not** a substitute for design verification.
39+
- **Prebuilt binaries:** [`prebuilt_images/MPAM/v26.03_MPAM_0.7.0`](https://github.com/ARM-software/bsa-acs/tree/main/prebuilt_images/MPAM/v26.03_MPAM_0.7.0)
40+
- For details on tests implemented in this release, see the
41+
[SYS-MPAM Test Scenario Document](arm_mpam_architecture_compliance_test_scenario.md).
2442

25-
ACS build requires that the following requirements are met, Please skip this if you are using [MPAM Application Build Script](../../tools/scripts/build_mpam_uefi.sh).
43+
#### SYS-MPAM ACS version mapping
2644

27-
- Any mainstream Linux based OS distribution.
28-
- git clone EDK2 tree.
29-
- git clone EDK2-libc tree.
30-
- Install GCC-ARM 14.3 [toolchain](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads).
31-
- Install the build prerequisite packages to build EDK2. The details of the packages are beyond the scope of this document.
45+
| SYS-MPAM ACS Version | SYS-MPAM Tag ID | Spec Version |
46+
|:--------------------:|:---------------:|:------------:|
47+
| v0.7.0 | v26.03_MPAM_0.7.0 | MPAM Memory System Component A.a |
48+
| v0.5.0 | v25.03_MPAM_0.5.0_ALP | MPAM Memory System Component A.a |
3249

33-
#### Build Steps
50+
## Documentation and Guides
51+
- [SYS-MPAM Test Scenario Document](arm_mpam_architecture_compliance_test_scenario.md)
52+
- [Common CLI arguments](../common/cli_args.md)
53+
- [Common UEFI build guide](../common/uefi_build.md)
3454

35-
- cd /path/to/bsa-acs/<br/>
36-
- source mpam/scripts/build_mpam_uefi.sh
55+
## SYS-MPAM build steps
3756

38-
#### Build Output
57+
### UEFI Shell application
3958

40-
The following output file is created in /path/to/bsa-acs/workspace/output/:
59+
Follow the [Common UEFI build guide](../common/uefi_build.md) to set up the
60+
edk2 workspace and Arm toolchain, then run:
4161

42-
- Mpam.efi
62+
- `source ShellPkg/Application/sysarch-acs/tools/scripts/acsbuild.sh mpam`
4363

44-
#### Note : Steps to get toolchain
45-
- wget https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
46-
- tar -xf arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
47-
- export GCC_AARCH64_PREFIX= GCC 14.3 toolchain path pointing to arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
64+
The flow emits `Mpam.efi` under `Build/Shell/<TOOL_CHAIN_TAG>/AARCH64/` inside
65+
the edk2 workspace.
4866

49-
## Test suite execution in UEFI
67+
## SYS-MPAM run steps
5068

51-
### Post-Silicon
69+
### For UEFI application
5270

53-
On a system where a USB port is available and functional, perform the following steps:
71+
#### Silicon System
72+
On a system with a functional USB port:
73+
1. Copy `Mpam.efi` to a FAT-formatted USB device.
74+
2. Boot to the UEFI shell.
75+
3. Refresh mappings with: `map -r`.
76+
4. Switch to the USB filesystem (for example, `fs0:`).
77+
5. Run `Mpam.efi` with the required parameters (see
78+
[Application arguments](#application-arguments)).
79+
6. Capture the UART console output to a log file for analysis.
5480

55-
1. Copy 'Mpam.efi' to a USB Flash drive.
56-
2. Plug in the USB Flash drive to one of the functional USB ports on the system.
57-
3. Boot the system to UEFI shell.
58-
4. To determine the file system number of the plugged in USB drive, execute 'map -r' command.
59-
5. Type 'fsx' where 'x' is replaced by the number determined in step 4.
60-
6. To start the compliance tests, run the executable Mpam.efi with the appropriate arguments.
81+
**Example**
6182

62-
### Emulation environment with secondary storage
83+
`Shell> Mpam.efi -v 1 -skip 15,20,30 -f mpam_uefi.log`
6384

64-
On an emulation environment with secondary storage, perform the following steps:
85+
Runs at INFO level, skips tests 15/20/30, and saves the UART log to
86+
`mpam_uefi.log`.
6587

66-
1. Create an image file which contains the 'Mpam.efi' file. For Example: <br/>
67-
- mkfs.vfat -C -n HD0 hda.img 31457280 <br/>
68-
- sudo mount hda.img /mnt/mpam <br/>
69-
- cd /path/to/bsa-acs/workspace/output/ <br/>
70-
- sudo cp Mpam.efi /mnt/mpam/ <br/>
71-
- sudo umount /mnt/mpam
72-
2. Load the image file to the secondary storage using a backdoor. The steps followed to load the image file are Emulation environment specific and beyond the scope of this document.
73-
3. Boot the system to UEFI shell.
74-
4. To determine the file system number of the secondary storage, execute 'map -r' command.
75-
5. Type 'fsx' where 'x' is replaced by the number determined in step 4.
76-
6. To start the compliance tests, run the executable Mpam.efi with the appropriate arguments.
88+
#### Emulation environment with secondary storage
89+
1. Create a FAT image containing `Mpam.efi`:
90+
`mkfs.vfat -C -n HD0 hda.img 31457280`
91+
`sudo mount hda.img /mnt/mpam`
92+
`sudo cp <path to Mpam.efi> /mnt/mpam/`
93+
`sudo umount /mnt/mpam`
94+
2. Attach the image to the virtual platform or emulator using its documented
95+
backdoor method.
96+
3. Boot to the UEFI shell.
97+
4. Refresh filesystem mappings with: `map -r`.
98+
5. Switch to the assigned filesystem (`fs<x>`), then run `Mpam.efi`.
99+
6. Capture UART console output for certification and debug reports.
77100

78101
## Application arguments
79102

80-
Command line arguments are similar for uefi application, with some exceptions.
103+
SYS-MPAM ACS currently supports numeric test and module selectors. See the
104+
[Common CLI arguments](../common/cli_args.md) for shared options.
81105

82-
### UEFI
83-
84-
Shell> Mpam.efi [-v &lt;verbosity&gt;] [-skip &lt;test_id&gt;] [-f &lt;filename&gt;]
106+
Shell> Mpam.efi [-v <verbosity>] [-skip <test_id>] [-t <test_id>] [-m <module_id>] [-f <filename>]
85107

86108
#### -v
87109
Choose the verbosity level.
@@ -93,42 +115,37 @@ Choose the verbosity level.
93115
- 5 - ERROR
94116

95117
#### -skip
96-
Overrides the suite to skip the execution of a particular
97-
test. For example, <i>-skip 10</i> skips test 10.
118+
Skip execution of particular test IDs. For example, `-skip 10` skips test 10.
98119

99120
#### -t
100-
If Test ID(s) set, will only run the specified test(s), all others will be skipped
101-
For example, <i>-t 10</i> Run test 10.
121+
If test ID(s) are set, only those tests run. For example, `-t 10` runs test 10.
102122

103123
#### -m
104-
If Module ID(s) set, will only run the specified module(s), all others will be skipped
105-
For example, <i>-m 100</i> Run Cache Module.
106-
107-
#### -f (Only for UEFI application)
108-
Save the test output into a file in secondary storage. For example <i>-f mpam.log</i> creates a file mpam.log with test output.
109-
110-
### UEFI example
111-
112-
Shell> Mpam.efi -v 1 -skip 15,20,30 -f mpam_uefi.log
124+
If module ID(s) are set, only those modules run. For example, `-m 100` runs the
125+
Cache module.
113126

114-
Runs MPAM ACS with verbosity INFO, skips test 15, 20 and 30 and saves the test results in <i>mpam_uefi.log</i>.
127+
#### -f (UEFI only)
128+
Save test output to a file in secondary storage. For example,
129+
`-f mpam.log` creates `mpam.log` with test output.
115130

116131
## Limitations
132+
- This is an Alpha-quality release with a limited number of tests based on the
133+
MPAM MSC specification.
134+
- Some tests related to MSC error handling have been verified on limited
135+
platforms. If you encounter failures or errors during ACS runs, please raise
136+
an issue.
137+
- Memory Bandwidth Partitioning tests have been implemented but not yet
138+
verified on any platform.
117139

118-
- Since this is a Alpha quality release, contains limited number of tests based on MPAM MSC Specification.
119-
- Few of the tests related to Errors in MSC have been verified on limited platforms. Please reach out to us in case of any help.
120-
- Memory Bandwidth Partitioning tests have been implemented but have not yet been verified on any platform. If you encounter any failures or errors during the ACS run, Please raise an issue.
140+
## Feedback, contributions and support
121141

122-
## License
123-
MPAM ACS is distributed under Apache v2.0 License.
124-
125-
## Feedback, contributions, and support
142+
- Email: [support-systemready-acs@arm.com](mailto:support-systemready-acs@arm.com)
143+
- GitHub Issues: [sysarch-acs issue tracker](https://github.com/ARM-software/sysarch-acs/issues)
144+
- Arm licensees can contact Arm through their partner managers.
126145

127-
- For feedback, use the GitHub Issue Tracker that is associated with this repository.
128-
- For support, send an email to "support-systemready-acs@arm.com" with details.
129-
- Arm licensees may contact Arm directly through their partner managers.
130-
- Arm welcomes code contributions through GitHub pull requests. See the GitHub documentation on how to raise pull requests.
146+
## License
147+
SYS-MPAM ACS is distributed under Apache v2.0 License.
131148

132149
--------------
133150

134-
*Copyright (c) 2025, Arm Limited and Contributors. All rights reserved.*
151+
*Copyright (c) 2025-2026, Arm Limited and Contributors. All rights reserved.*

0 commit comments

Comments
 (0)