This management service extension is designed to be used for software invocation of Management Mode (MM) in a secure execution environment. For general background on Management Mode (MM), review the Platform Initialization (PI) specifications, Volume 4: Management Mode Core Interface. Management Mode (MM) provides an environment for implementing OS agnostic services (MM services) like secure variable storage, and firmware updates in system firmware. The services can be invoked synchronously and asynchronously. This service group describes the interfaces for invoking MM services synchronously.
Service ID | Service Name | Request Type |
---|---|---|
0x01 |
ENABLE_NOTIFICATION |
NORMAL_REQUEST |
0x02 |
MM_VERSION |
NORMAL_REQUEST |
0x03 |
MM_COMMUNICATE |
NORMAL_REQUEST |
0x04 |
MM_COMPLETE |
NORMAL_REQUEST |
0x05 |
MM_INITIALIZE |
NORMAL_REQUEST |
This service allows AP to subscribe to management service group notifications. Platform can optionally support notifications of events which might occur in the platform. PuC can send these notification messages to AP if they are implemented and AP has subscribed to these. Events supported are described above in Management Notifications.
Word | Name | Type | Description |
---|---|---|---|
0 |
EVENT_ID |
uint32 |
Event to be subscribed for notification. |
Word | Name | Type | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0 |
STATUS |
int32 |
Return Status Code
|
This service returns the version of a management mode service.
-
NA
Word | Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
0 |
STATUS |
int32 |
Return Status Code
|
||||||
1 |
MM_VERSION |
uint32 |
Management mode service version.
|
Calling this MM_COMMUNICATE api invokes a MM service that is implemented in the secure execution environment. The MM_COMM_BUFFER contains data to identify and invoke the MM service. This synchronous call is returned by using MM_COMPLETE.
Word | Name | Type | Description |
---|---|---|---|
0 |
MM_COMM_BUFFER |
uint32 |
MM data from non-secure to secure world. |
Word | Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
0 |
STATUS |
int32 |
Return Status Code
|
Use this MM_COMPLETE as the “world-switch synchronous call” normally at the end of a synchronous MM_COMMUNICATE call to signal the readiness for handling the synchronous request. The MM_COMM_BUFFER contains the returned data of the MM service invoked.
Word | Name | Type | Description |
---|---|---|---|
0 |
MM_COMM_BUFFER |
uint32 |
MM data from non-secure to secure world. |
Word | Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
0 |
STATUS |
int32 |
Return Status Code
|
This is an optional service. The MM modules may come in the firmware volume or FD files, loaded by the M-mode firmware like u-boot spl and initialized by the OpenSBI domain during the M-Mode firmware boot time. If so, this service api is not needed as default. But there is still case that the MM modules are requested to be loaded or initialized by the S-Mode firmware components, thus this service is used to launch the MM related modules as needed.
Word | Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
0 |
HART_ID |
uint8 |
Hart ID to launch |
||||||
1 |
DOMAIN_ID |
uint8 |
Secure domain ID to be used to initialize the mm modules. |
||||||
2:3 |
FLAGS |
uint16 |
|
||||||
4:5 |
MM_PAYLOAD_BASE |
uint64 |
Base address of MM payload loaded by the S-Mode firmware. |
||||||
6:7 |
MM_PAYLOAD_SIZE |
uint64 |
MM payload size loaded by the S-Mode firmware. |
||||||
8:263 |
MM_PAYLOAD_SIGNATURE |
uint8 |
MM payload signature loaded by the S-Mode firmware. |
Word | Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
0 |
STATUS |
int32 |
Return Status Code
|