diff --git a/src/srvgrp-base.adoc b/src/srvgrp-base.adoc index 911fa85..b7c60a7 100644 --- a/src/srvgrp-base.adoc +++ b/src/srvgrp-base.adoc @@ -122,7 +122,7 @@ in table <>. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="6,5a", options="header"] !=== @@ -165,7 +165,7 @@ the `MAJOR` and `MINOR` numbers. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="2,5a", options="header"] !=== @@ -220,7 +220,7 @@ unique and listed in the table <> | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="2,5a", options="header"] !=== @@ -262,7 +262,7 @@ version returned is a `32-bit` composite number containing the `MAJOR` and | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="2,5a", options="header"] !=== @@ -314,7 +314,7 @@ This service is used to get addition platform information if available. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="5,5a", options="header"] !=== @@ -376,7 +376,7 @@ The first `16-bit` of the `uint32` field will store the `SERVICEGROUP_ID`. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="3,4a", options="header"] !=== @@ -420,7 +420,7 @@ service group. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="2,5a", options="header"] !=== @@ -531,7 +531,7 @@ processor will take the wired interrupt. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="7,5a", options="header"] !=== diff --git a/src/srvgrp-clock.adoc b/src/srvgrp-clock.adoc index e7a6b09..0d921c4 100644 --- a/src/srvgrp-clock.adoc +++ b/src/srvgrp-clock.adoc @@ -56,20 +56,46 @@ Below table lists the services in this group: .CLOCK Services [cols="1, 3, 2", width=100%, align="center", options="header"] |=== -| Service ID | Service Name | Request Type -| 0x01 | CLK_ENABLE_NOTIFICATION | NORMAL_REQUEST -| 0x02 | CLK_GET_NUM_CLOCKS | NORMAL_REQUEST -| 0x03 | CLK_GET_ATTRIBUTES | NORMAL_REQUEST -| 0x04 | CLK_GET_SUPPORTED_RATES | NORMAL_REQUEST -| 0x05 | CLK_SET_CONFIG | NORMAL_REQUEST -| 0x06 | CLK_GET_CONFIG | NORMAL_REQUEST -| 0x07 | CLK_SET_RATE | NORMAL_REQUEST -| 0x08 | CLK_GET_RATE | NORMAL_REQUEST +| Service ID +| Service Name +| Request Type + +| 0x01 +| CLK_ENABLE_NOTIFICATION +| NORMAL_REQUEST + +| 0x02 +| CLK_GET_NUM_CLOCKS +| NORMAL_REQUEST + +| 0x03 +| CLK_GET_ATTRIBUTES +| NORMAL_REQUEST + +| 0x04 +| CLK_GET_SUPPORTED_RATES +| NORMAL_REQUEST + +| 0x05 +| CLK_SET_CONFIG +| NORMAL_REQUEST + +| 0x06 +| CLK_GET_CONFIG +| NORMAL_REQUEST + +| 0x07 +| CLK_SET_RATE +| NORMAL_REQUEST + +| 0x08 +| CLK_GET_RATE +| NORMAL_REQUEST |=== [#clock-notifications] ==== Notifications -This service group does not support any event for notification +This service group does not support any event for notification. ==== Service: CLK_ENABLE_NOTIFICATION (SERVICE_ID: 0x01) This service allows the application processor to subscribe to CLOCK service @@ -83,23 +109,44 @@ described in <>. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | EVENT_ID | uint32 | Event to be subscribed for -notification. +| Word +| Name +| Type +| Description + +| 0 +| EVENT_ID +| uint32 +| Event to be subscribed for notification. |=== [#table_clock_ennotification_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Notifications are subscribed successfully. -! RPMI_ERROR_NOT_FOUND ! EVENT_ID is not supported or invalid. -! RPMI_ERROR_NOT_SUPPORTED ! Notifications not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Notification is subscribed successfully. + +! RPMI_ERR_INVALID_PARAM +! `EVENT_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Notification is not supported. !=== - Other errors <> |=== @@ -117,15 +164,31 @@ called CLOCK_ID. CLOCK_ID are sequential starting from `0`. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="2,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="2,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + !=== - Other errors <> -| 1 | NUM_CLOCKS | uint32 | Number of Clocks + +| 1 +| NUM_CLOCKS +| uint32 +| Number of clocks. |=== ==== Service: CLK_GET_ATTRIBUTES (SERVICE_ID: 0x03) @@ -145,37 +208,76 @@ the future, as needed. .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID |=== [#table_clock_getattrs_response_data] .Response Data -[cols="1, 3, 1, 7a", width=100%, align="center", options="header"] +[cols="1, 3, 2, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="4,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="7,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Clock not found +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` is invalid. + !=== - Other errors <> -| 1 | FLAGS | uint32 | -[cols="2,5a"] + +| 1 +| FLAGS +| uint32 +| +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* -! [31:30] ! CLOCK_FORMAT (Refer to <>) +! Bits +! Description + +! [31:30] ! CLOCK_FORMAT (Refer to <>) ---- 0b00: Discrete Format 0b01: Linear Range ---- + ! [29:0] ! _Reserved_ !=== -| 2 | NUM_RATES | uint32 | Number of clock rates of type depending on CLOCK_FORMAT. -| 3 | TRANSITION_LATENCY | uint32 | Transition latency, in microseconds (us) -| 4:7 | CLOCK_NAME | uint8[16] | Clock name +| 2 +| NUM_RATES +| uint32 +| Number of clock rates depending on CLOCK_FORMAT. + +| 3 +| TRANSITION_LATENCY +| uint32 +| Transition latency, in microseconds (us) + +| 4:7 +| CLOCK_NAME +| uint8[16] +| Clock name |=== ==== Service: CLK_GET_SUPPORTED_RATES (SERVICE_ID: 0x04) @@ -204,29 +306,72 @@ RETURNED field will be set to `3`. .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID -| 1 | CLOCK_RATE_INDEX | uint32 | Clock rate index +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID + +| 1 +| CLOCK_RATE_INDEX +| uint32 +| Clock rate index |=== [#table_clock_getsupprates_response_data] .Response Data -[cols="1, 3, 1, 7a", width=100%, align="center", options="header"] +[cols="1, 3, 2, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="7,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! CLOCK_ID not found. -! RPMI_ERROR_INVALID_PARAMETER ! CLOCK_RATE_INDEX is not in valid range. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` is invalid. + +! RPMI_ERR_BAD_RANGE +! `CLOCK_RATE_INDEX` is not in valid range. + !=== - Other errors <> -| 1 | FLAGS | uint32 | _Reserved_ and must be `0`. -| 2 | REMAINING | uint32 | Remaining number of clock rates. (number of arrays) -| 3 | RETURNED | uint32 | Number of clock rates returned. (number of arrays) -| 4 | CLOCK_RATE[N] | uint32[2] | Clock rate. (Refer to <>) + +| 1 +| FLAGS +| uint32 +| _Reserved_ and must be `0`. + +| 2 +| REMAINING +| uint32 +| Remaining number of clock rates (number of arrays). + +| 3 +| RETURNED +| uint32 +| Number of clock rates returned (number of arrays). + +| 4 +| CLOCK_RATE[N] +| uint32[2] +| Clock rate. (Refer to <>) |=== ==== Service: CLK_SET_CONFIG (SERVICE_ID: 0x05) @@ -236,12 +381,26 @@ Set clock config, enable or disable the clock. .Request Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID -| 1 | CONFIG | uint32 | Clock config -[cols="2,5a"] +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID + +| 1 +| CONFIG +| uint32 +| Clock config + +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* +! Bits +! Description + ! [31:1] ! _Reserved_ ! [0] ! @@ -254,14 +413,27 @@ Set clock config, enable or disable the clock. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! CLOCK_ID not found. -! RPMI_ERROR_INVALID_PARAMETER ! CONFIG is not supported by the clock. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` or `CONFIG` is invalid. + !=== - Other errors <> |=== @@ -274,27 +446,55 @@ Get the current status of a clock, if it's enabled or disabled. .Request Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID |=== [#table_clock_getconfig_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! CLOCK_ID not found. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` is invalid. + !=== - Other errors <> -| 1 | CONFIG | uint32 | Clock config -[cols="2,5a"] + +| 1 +| CONFIG +| uint32 +| Clock config + +[cols="2,5a", options="header"] !=== -! *Value* ! *Description* +! Value +! Description + ! 0x0 ! Disabled ! 0x1 ! Enabled !=== @@ -307,12 +507,25 @@ Set clock rate. .Request Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID -| 1 | FLAGS | uint32 | -[cols="2,5a"] +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID + +| 1 +| FLAGS +| uint32 +| +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* +! Bits +! Description + ! [31:30] ! Clock rate roundup/rounddown ---- 0b00: Round down @@ -322,22 +535,43 @@ Set clock rate. ! [29:0] ! _Reserved_ !=== -| 2 | CLOCK_RATE_LOW | uint32 | Lower 32 bits of the clock rate in Hertz. -| 3 | CLOCK_RATE_HIGH | uint32 | Upper 32 bits of the clock rate in Hertz. + +| 2 +| CLOCK_RATE_LOW +| uint32 +| Lower 32 bits of the clock rate in Hertz. + +| 3 +| CLOCK_RATE_HIGH +| uint32 +| Upper 32 bits of the clock rate in Hertz. |=== [#table_clock_setrate_response_data] .Response Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="7,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! CLOCK_ID not found. -! RPMI_ERROR_INVALID_PARAMETER ! Clock rate is not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` or clock rate is invalid. + !=== - Other errors <> |=== @@ -349,23 +583,52 @@ Get the current clock rate value. .Request Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | CLOCK_ID | uint32 | Clock ID +| Word +| Name +| Type +| Description + +| 0 +| CLOCK_ID +| uint32 +| Clock ID |=== [#table_clock_getrate_response_data] .Request Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! CLOCK_ID not found. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `CLOCK_ID` is invalid. + !=== - Other errors <> -| 1 | CLOCK_RATE_LOW | uint32 | Lower 32 bits of the clock rate in Hertz. -| 2 | CLOCK_RATE_HIGH | uint32 | Upper 32 bits of the clock rate in Hertz. + +| 1 +| CLOCK_RATE_LOW +| uint32 +| Lower 32 bits of the clock rate in Hertz. + +| 2 +| CLOCK_RATE_HIGH +| uint32 +| Upper 32 bits of the clock rate in Hertz. |=== diff --git a/src/srvgrp-device-power.adoc b/src/srvgrp-device-power.adoc index 7f8d826..f293c0f 100644 --- a/src/srvgrp-device-power.adoc +++ b/src/srvgrp-device-power.adoc @@ -33,24 +33,47 @@ and start from 0. [#table_devpower_powerstate_data] .Power States Encoding -[cols="2, 2, 5a", width=100%, align="center", options="header"] +[cols="2, 1, 5a", width=100%, align="center", options="header"] |=== -| POWER_STATE (uint32) | Field | Description -| POWER_STATE[31] | CONTEXT | +| POWER_STATE +| Field +| Description +| POWER_STATE[31] +| CONTEX +| 0b0: Context is preserved 0b1: Context is lost -| POWER_STATE[30:16] | RESERVED | _Reserved_ -| POWER_STATE[15:0] | VALUE | -[cols="2,5"] + +| POWER_STATE[30:16] +| RESERVED +| _Reserved_ + +| POWER_STATE[15:0] +| VALUE +| +[cols="2,5", options="header"] !=== -! *Value* ! *Description* -! 0x0000 ! ON with POWER_STATE[31] = 0 -! 0x0001 ! _Reserved_ -! 0x0002 ! _Reserved_ -! 0x0003 ! OFF with POWER_STATE[31] = 1 -! 0x0004 - 0x0FFF ! _Reserved_ -! 0x1000 - 0xFFFF ! Vendor specific states +! Value +! Description + +! 0x0000 +! ON with POWER_STATE[31] = 0 + +! 0x0001 +! _Reserved_ + +! 0x0002 +! _Reserved_ + +! 0x0003 +! OFF with POWER_STATE[31] = 1 + +! 0x0004 - 0x0FFF +! _Reserved_ + +! 0x1000 - 0xFFFF +! Vendor specific states !=== |=== @@ -58,12 +81,29 @@ and start from 0. .DEVICE_POWER Services [cols="1, 3, 2", width=100%, align="center", options="header"] |=== -| Service ID | Service Name | Request Type -| 0x01 | DPWR_ENABLE_NOTIFICATION | NORMAL_REQUEST -| 0x02 | DPWR_GET_NUM_DOMAINS | NORMAL_REQUEST -| 0x03 | DPWR_GET_ATTRIBUTES | NORMAL_REQUEST -| 0x04 | DPWR_SET_STATE | NORMAL_REQUEST -| 0x05 | DPWR_GET_STATE | NORMAL_REQUEST +| Service ID +| Service Name +| Request Type + +| 0x01 +| DPWR_ENABLE_NOTIFICATION +| NORMAL_REQUEST + +| 0x02 +| DPWR_GET_NUM_DOMAINS +| NORMAL_REQUEST + +| 0x03 +| DPWR_GET_ATTRIBUTES +| NORMAL_REQUEST + +| 0x04 +| DPWR_SET_STATE +| NORMAL_REQUEST + +| 0x05 +| DPWR_GET_STATE +| NORMAL_REQUEST |=== [#device-power-notifications] @@ -82,23 +122,44 @@ described in <>. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | EVENT_ID | uint32 | Event to be subscribed for -notification. +| Word +| Name +| Type +| Description + +| 0 +| EVENT_ID +| uint32 +| Event to be subscribed for notification. |=== [#table_devpower_ennotification_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Notification is subscribed successfully. -! RPMI_ERROR_NOT_FOUND ! EVENT_ID is not supported or invalid. -! RPMI_ERROR_NOT_SUPPORTED ! Notification is not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Notification is subscribed successfully. + +! RPMI_ERR_INVALID_PARAM +! `EVENT_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Notification is not supported. !=== - Other errors <> |=== @@ -116,15 +177,31 @@ the actual number of domains present with the platform. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="2,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="2,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + !=== - Other errors <> -| 1 | NUM_DOMAINS | uint32 | Number of device power domains + +| 1 +| NUM_DOMAINS +| uint32 +| Number of device power domains. |=== @@ -135,28 +212,58 @@ This service is used to query the attributes of a device power domain. .Request Data [cols="1, 4, 1, 6", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Device power domain ID +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Device power domain ID |=== [#table_devpower_getattrs_response_data] .Response Data -[cols="1, 4, 1, 6a", width=100%, align="center", options="header"] +[cols="1, 4, 2, 6a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="7,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Device power domain not found +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. !=== - Other errors <> -| 1 | FLAGS | uint32 | _Reserved_ -| 2 | TRANSITION_LATENCY | uint32 | Worst case transition latency -of domain from one power state to another, in microseconds (us) -| 3:6 | DEVICE_POWER_DOMAIN_NAME | uint8[16] | Device power domain -name, a NULL-terminated ASCII string up to 16-bytes. + +| 1 +| FLAGS +| uint32 +| _Reserved_ + +| 2 +| TRANSITION_LATENCY +| uint32 +| Worst case transition latency of domain from one power state to another, in microseconds (us). + +| 3:6 +| DOMAIN_NAME +| uint8[16] +| Device power domain name, a NULL-terminated ASCII string up to 16-bytes. |=== @@ -167,28 +274,56 @@ This service is used to change the power state of a device power domain. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Device power domain ID -| 1 | POWER_STATE | uint32 | This field indicates the power state to which the power domain should transition. The specific power states and their -meanings may vary depending on the implementation, but generally, they include -values such as "ON", "OFF" and vendor specific power state. + -See Power States description in the <>. +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Device power domain ID + +| 1 +| POWER_STATE +| uint32 +| This field indicates the power state to which the power domain should +transition. The specific power states and their meanings may vary depending on +the implementation, but generally, they include values such as "ON", "OFF" +and vendor specific power state. See Power States description in the +<>. |=== [#table_devpower_setstate_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Device power domain not found. -! RPMI_ERROR_INVALID_PARAMETER ! Invalid or not supported POWER_STATE value. -! RPMI_ERROR_DENIED ! Client does not have permissions to change the device power domain power state. -! RPMI_ERROR_HW_FAULT ! Failed due to hardware error. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` or `POWER_STATE` is invalid. + +! RPMI_ERR_DENIED +! Client does not have permissions to change the device power domain power state. + +! RPMI_ERR_HW_FAULT +! Failed due to hardware error. !=== - Other errors <> |=== @@ -200,26 +335,52 @@ This service is used to get the current power state of a device power domain. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Device power domain ID +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Device power domain ID |=== [#table_devpower_getstate_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="4,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Device power domain not found. -! RPMI_ERROR_DENIED ! Client does not have permissions to change the device power domain power state. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. + +! RPMI_ERR_DENIED +! Client does not have permissions to change the device power domain power state. !=== - Other errors <> -| 1 | POWER_STATE | uint32 | This field indicates the current power state -of the specified domain. The power state can be one of several predefined values, -such as ON, OFF, or vendor specific implementation. -See Power States description in the <>. + +| 1 +| POWER_STATE +| uint32 +| This field indicates the current power state of the specified domain. The +power state can be one of several predefined values, such as ON, OFF, or vendor +specific implementation. See Power States description in the +<>. |=== diff --git a/src/srvgrp-management.adoc b/src/srvgrp-management.adoc index 3f2fa62..383f86b 100644 --- a/src/srvgrp-management.adoc +++ b/src/srvgrp-management.adoc @@ -24,11 +24,25 @@ MM_COMPLETE facilitates synchronous call from the secure to the non-secure world .MANAGEMENT_MODE Services [cols="1, 3, 2", width=100%, align="center", options="header"] |=== -| Service ID | Service Name | Request Type -| 0x01 | MM_ENABLE_NOTIFICATION | NORMAL_REQUEST -| 0x02 | MM_VERSION | NORMAL_REQUEST -| 0x03 | MM_COMMUNICATE | NORMAL_REQUEST -| 0x04 | MM_COMPLETE | NORMAL_REQUEST +| Service ID +| Service Name +| Request Type + +| 0x01 +| MM_ENABLE_NOTIFICATION +| NORMAL_REQUEST + +| 0x02 +| MM_VERSION +| NORMAL_REQUEST + +| 0x03 +| MM_COMMUNICATE +| NORMAL_REQUEST + +| 0x04 +| MM_COMPLETE +| NORMAL_REQUEST |=== [#management-notifications] @@ -47,23 +61,45 @@ in <>. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | EVENT_ID | uint32 | Event to be subscribed for -notification. +| Word +| Name +| Type +| Description + +| 0 +| EVENT_ID +| uint32 +| Event to be subscribed for notification. |=== [#table_mm_ennotification_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Notifications are subscribed successfully. -! RPMI_ERROR_NOT_FOUND ! EVENT_ID is not supported or invalid. -! RPMI_ERROR_NOT_SUPPORTED ! Notifications not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Notification is subscribed successfully. + +! RPMI_ERR_INVALID_PARAM +! `EVENT_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Notification is not supported. + !=== - Other errors <> |=== @@ -81,21 +117,44 @@ This service returns the version of a Management Mode. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="4,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code +[cols="4,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_DENIED ! Denied due to no permission. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_DENIED +! Denied due to no permission. + !=== - Other errors <> -| 1 | MM_VERSION | uint32 | Management Mode version. -[cols="2,5"] + +| 1 +| MM_VERSION +| uint32 +| Management Mode version. + +[cols="2,5", options="header"] !=== -! *Bits* ! *Description* -! [31:16] ! Major Version -! [15:0] ! Minor Version +! Bits +! Description + +! [31:16] +! Major Version + +! [15:0] +! Minor Version !=== |=== @@ -109,30 +168,59 @@ world is signaled by the MM_COMPLETE call from the secure world. [#table_mm_communicate_request_data] .Request Data -[cols="1, 4, 1, 7", width=100%, align="center", options="header"] +[cols="1, 5, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | MM_COMM_DATA_ADDR_LOW | uint32 | Lower 32 bits of MM data's physical -address from non-secure to secure world. -| 1 | MM_COMM_DATA_ADDR_HIGH| uint32 | Upper 32 bits of MM data's physical -address from non-secure to secure world. -| 2 | MM_COMM_DATA_SIZE_LOW | uint32 | Lower 32 bits of MM data's length -from non-secure to secure world. -| 3 | MM_COMM_DATA_SIZE_HIGH| uint32 | Upper 32 bits of MM data's length -from non-secure to secure world. +| Word +| Name +| Type +| Description + +| 0 +| MM_COMM_DATA_ADDR_LOW +| uint32 +| Lower 32 bits of MM data's physical address from non-secure to secure world. + +| 1 +| MM_COMM_DATA_ADDR_HIGH +| uint32 +| Upper 32 bits of MM data's physical address from non-secure to secure world. + +| 2 +| MM_COMM_DATA_SIZE_LOW +| uint32 +| Lower 32 bits of MM data's length from non-secure to secure world. + +| 3 +| MM_COMM_DATA_SIZE_HIGH +| uint32 +| Upper 32 bits of MM data's length from non-secure to secure world. |=== [#table_mm_communicate_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Status code return from MM service to non-secure world. -[cols="4,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Status code return from MM service to non-secure world. + +[cols="4,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_DENIED ! Denied due to no permission. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_DENIED +! Denied due to no permission. + !=== - Other errors <> |=== @@ -149,28 +237,57 @@ service invoked. .Request Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Status code sent from MM service to non-secure world. -[cols="4,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Status code sent from MM service to non-secure world. + +[cols="4,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_DENIED ! Denied due to no permission. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_DENIED +! Denied due to no permission. + !=== - Other errors <> |=== [#table_mm_complete_response_data] .Response Data -[cols="1, 4, 1, 7a", width=100%, align="center", options="header"] -|=== -| Word | Name | Type | Description -| 0 | MM_COMM_DATA_ADDR_LOW | uint32 | Lower 32 bits of MM data's physical -address from non-secure to secure world. -| 1 | MM_COMM_DATA_ADDR_HIGH| uint32 | Upper 32 bits of MM data's physical -address from non-secure to secure world. -| 2 | MM_COMM_DATA_SIZE_LOW | uint32 | Lower 32 bits of MM data's length -from non-secure to secure world. -| 3 | MM_COMM_DATA_SIZE_HIGH| uint32 | Upper 32 bits of MM data's length -from non-secure to secure world. +[cols="1, 5, 1, 7a", width=100%, align="center", options="header"] +|=== +| Word +| Name +| Type +| Description + +| 0 +| MM_COMM_DATA_ADDR_LOW +| uint32 +| Lower 32 bits of MM data's physical address from non-secure to secure world. + +| 1 +| MM_COMM_DATA_ADDR_HIGH +| uint32 +| Upper 32 bits of MM data's physical address from non-secure to secure world. + +| 2 +| MM_COMM_DATA_SIZE_LOW +| uint32 +| Lower 32 bits of MM data's length from non-secure to secure world. + +| 3 +| MM_COMM_DATA_SIZE_HIGH +| uint32 +| Upper 32 bits of MM data's length from non-secure to secure world. |=== diff --git a/src/srvgrp-performance.adoc b/src/srvgrp-performance.adoc index dd81d81..897ee73 100644 --- a/src/srvgrp-performance.adoc +++ b/src/srvgrp-performance.adoc @@ -36,12 +36,23 @@ purposes. *Performance Level Structure*:: [#table_performance_level] .Performance Level Structure -[cols="1,1,5" width=100%, align="center"] +[cols="1,2,5" width=100%, align="center", options="header"] |=== -| *Word* | *Name* | *Description* -| 0 | Clock Frequency | Clock frequency (in kHz) -| 1 | Power Cost | Power cost (in uW) -| 2 | Transition Latency | Latency (in us) +| Word +| Name +| Description + +| 0 +| Clock Frequency +| Clock frequency (in kHz) + +| 1 +| Power Cost +| Power cost (in uW) + +| 2 +| Transition Latency +| Latency (in us) |=== [#table_perf_services] @@ -72,34 +83,73 @@ inform clients in the system about changes in the performance domain. .Performance Notification Events [cols="1, 3, 5a, 2", width=100%, align="center", options="header"] |=== -| Event ID | Name | Event Data | Description -| 0x001 | PERF_POWER_CHANGE | -[cols="2,2,5"] +| Event ID +| Name +| Event Data +| Description + +| 0x001 +| PERF_POWER_CHANGE +| +[cols="2,2,5", options="header"] !=== -! *Word* ! Type ! *Description* -! 0 ! uint32 ! Performance domain ID whose power changed. -! 1 ! uint32 ! New power value (uW) +! Word +! Type +! Description + +! 0 +! uint32 +! Performance domain ID whose power changed. + +! 1 +! uint32 +! New power value (uW) + !=== | Performance power changed notification. -| 0x002 | PERF_LIMIT_CHANGE | -[cols="2,2,5"] +| 0x002 +| PERF_LIMIT_CHANGE +| +[cols="2,2,5", options="header"] !=== -! *Word* ! Type ! *Description* -! 0 ! uint32 ! Performance domain ID whose performance limit -changed. -! 1 ! uint32 ! New maximum performance level. -! 2 ! uint32 ! New minimum performance level. +! Word +! Type +! Description + +! 0 +! uint32 +! Performance domain ID whose performance limit changed. + +! 1 +! uint32 +! New maximum performance level. + +! 2 +! uint32 +! New minimum performance level. + !=== | Performance limit changed notification. -| 0x003 | PERF_LEVEL_CHANGE | -[cols="2,2,5"] +| 0x003 +| PERF_LEVEL_CHANGE +| +[cols="2,2,5", options="header"] !=== -! *Word* ! Type ! *Description* -! 0 ! uint32 ! Performance domain ID whose performance level changed. -! 1 ! uint32 ! New performance level. +! Word +! Type +! Description + +! 0 +! uint32 +! Performance domain ID whose performance level changed. + +! 1 +! uint32 +! New performance level. !=== + | Performance level changed notification. |=== @@ -162,23 +212,45 @@ supported events are described in <>. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | EVENT_ID | uint32 | Event to be subscribed for -notification. +| Word +| Name +| Type +| Description + +| 0 +| EVENT_ID +| uint32 +| Event to be subscribed for notification. |=== [#table_perf_ennotification_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Notifications are subscribed successfully. -! RPMI_ERROR_NOT_FOUND ! EVENT_ID is not supported or invalid. -! RPMI_ERROR_NOT_SUPPORTED ! Notifications not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Notification is subscribed successfully. + +! RPMI_ERR_INVALID_PARAM +! `EVENT_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Notification is not supported. + !=== - Other errors <> |=== @@ -201,15 +273,31 @@ important for optimizing system performance and power consumption. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="2,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="2,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + !=== - Other errors <> -| 1 | NUM_DOMAINS | uint32 | Number of performance domains + +| 1 +| NUM_DOMAINS +| uint32 +| Number of performance domains |=== @@ -223,52 +311,98 @@ level. .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance domain ID +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance domain ID |=== [#table_perf_getattrs_response_data] .Response Data -[cols="1, 3, 1, 7a", width=100%, align="center", options="header"] +[cols="1, 2, 2, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. + !=== - Other errors <> -| 1 | FLAGS | uint32 | -[cols="2,5a"] + +| 1 +| FLAGS +| uint32 +| +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* -! [31] ! PERF_LIMIT_SETTING + +! Bits +! Description + +! [31] +! PERF_LIMIT_SETTING + This attribute indicates whether the platform allows software to set the performance limit/range for a specific performance domain. 0b0: Performance limit change not allowed. 0b1: Performance limit change allowed. -! [30] ! PERF_LEVEL_SETTING + + +! [30] +! PERF_LEVEL_SETTING + This attribute indicates whether the platform allows software to set the performance level for a specific performance domain. 0b0: Performance level change not allowed. 0b1: Performance level change allowed. -! [29] ! FAST_CHANNEL_SUPPORT + + +! [29] +! FAST_CHANNEL_SUPPORT + This attribute indicates whether the platform supports low latency communication channels for performance domain management. 0b0: Not supported 0b1: Supported -! [28:21] ! TOTAL_NUM_PERF_LEVELS + -Total number of performance levels supported. + +! [28:21] +! TOTAL_NUM_PERF_LEVELS + +The total number of supported performance levels. + ! [20:0] ! _Reserved_ + !=== -| 2 | RATE_LIMIT_US | uint32 | Minimum amount of time that needs to -pass between two consecutive requests, in microseconds (us). -| 3:6 | PERF_DOMAIN_NAME | uint8[16] | Performance domain name, a NULL-terminated ASCII string up to 16-bytes. +| 2 +| RATE_LIMIT_US +| uint32 +| Minimum amount of time that needs to pass between two consecutive requests, in microseconds (us). + +| 3:6 +| DOMAIN_NAME +| uint8[16] +| Performance domain name, a NULL-terminated ASCII string up to 16-bytes. |=== ==== Service: PERF_GET_SUPPORTED_LEVELS (SERVICE_ID: 0x04) @@ -322,32 +456,70 @@ It's possible that multiple service calls may be required to get all the levels. .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID. This field -specifies the identifier of the performance domain whose OPPs are being -described. -| 1 | PERF_LEVEL_INDEX | uint32 | Start array index to read. -First index starts from zero. +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID. This field specifies the identifier of the performance +domain whose OPPs are being described. + +| 1 +| PERF_LEVEL_INDEX +| uint32 +| Start array index to read. First index starts from zero. |=== [#table_perf_getdomainlevels_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found. -! RPMI_ERROR_INVALID_PARAMETER ! PERF_LEVEL_INDEX is invalid. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` or `PERF_LEVEL_INDEX` is invalid. + !=== - Other errors <> -| 1 | FLAGS | uint32 | _Reserved_ and must be `0`. -| 2 | REMAINING | uint32 | Remaining number of levels. (number of arrays) -| 3 | RETURNED | uint32 | Number of levels returned. (number of arrays) -| 4 | LEVEL[N] | uint32[3] | Performance level (<>) + +| 1 +| FLAGS +| uint32 +| _Reserved_ and must be `0`. + +| 2 +| REMAINING +| uint32 +| Remaining number of levels (number of arrays). + +| 3 +| RETURNED +| uint32 +| Number of levels returned (number of arrays). + +| 4 +| LEVEL[N] +| uint32[3] +| Performance level (<>) |=== @@ -359,24 +531,49 @@ performance domain in the system. .Request Data [cols="1, 2, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID |=== [#table_perf_getlevel_response_data] .Response Data [cols="1, 2, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. + !=== - Other errors <> -| 1 | LEVEL | uint32 | Current performance level of the domain + +| 1 +| LEVEL +| uint32 +| Current performance level of the domain. |=== @@ -388,27 +585,56 @@ performance domain in the system. .Request Data [cols="1, 1, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID -| 1 | LEVEL | uint32 | Performance level +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID + +| 1 +| LEVEL +| uint32 +| Performance level |=== [#table_perf_setlevel_response_data] .Response Data [cols="1, 1, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found. -! RPMI_ERROR_INVALID_PARAMETER ! Invalid performance level. -! RPMI_ERROR_NOT_SUPPORTED ! Performance level change not allowed. -! RPMI_ERROR_DENIED ! Client does not have permission to change the -performance level. -! RPMI_ERROR_HW ! Operation failed due to hardware error. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` or `LEVEL` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Performance level change not allowed. + +! RPMI_ERR_DENIED +! Client does not have permission to change the performance level. + +! RPMI_ERR_HW_FAULT +! Operation failed due to hardware error. + !=== - Other errors <> |=== @@ -422,25 +648,54 @@ performance domain in the system. .Request Data [cols="1, 2, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID |=== [#table_perf_getlimit_response_data] .Response Data [cols="1, 2, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. + !=== - Other errors <> -| 1 | MAX_PERF_LEVEL | uint32 | Maximum allowed performance level. -| 2 | MIN_PERF_LEVEL | uint32 | Minimum allowed performance level. + +| 1 +| MAX_PERF_LEVEL +| uint32 +| Maximum allowed performance level. + +| 2 +| MIN_PERF_LEVEL +| uint32 +| Minimum allowed performance level. |=== @@ -452,28 +707,61 @@ performance domain in the system. .Request Data [cols="1, 2, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID -| 1 | MAX_PERF_LEVEL | uint32 | Maximum allowed performance level -| 1 | MIN_PERF_LEVEL | uint32 | Minimum allowed performance level +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID + +| 1 +| MAX_PERF_LEVEL +| uint32 +| Maximum allowed performance level + +| 2 +| MIN_PERF_LEVEL +| uint32 +| Minimum allowed performance level |=== [#table_perf_setlimit_response_data] .Response Data [cols="1, 1, 1, 5a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found. -! RPMI_ERROR_INVALID_PARAMETER ! Invalid performance level. -! RPMI_ERROR_NOT_SUPPORTED ! Performance limit change not allowed. -! RPMI_ERROR_DENIED ! Client does not have permission to change the -performance level. -! RPMI_ERROR_HW ! Operation failed due to hardware error. +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` or performance level is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Performance limit change not allowed. + +! RPMI_ERR_DENIED +! Client does not have permission to change the performance level. + +! RPMI_ERR_HW_FAULT +! Operation failed due to hardware error. + !=== - Other errors <> |=== @@ -486,57 +774,119 @@ This service allows clients to query attributes of the Fast-channel for a specif .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | DOMAIN_ID | uint32 | Performance Domain ID -| 1 | SERVICE_ID | uint32 | Performance Service ID, see service ID in <> +| Word +| Name +| Type +| Description + +| 0 +| DOMAIN_ID +| uint32 +| Performance Domain ID + +| 1 +| SERVICE_ID +| uint32 +| Performance Service ID, see service ID in <> |=== [#table_perf_getfastchanaddr_response_data] .Response Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="6,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="6,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully. -! RPMI_ERROR_NOT_FOUND ! Performance domain not found -! RPMI_ERROR_NOT_SUPPORTED ! Fast-channel not implemented +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully. + +! RPMI_ERR_INVALID_PARAM +! `DOMAIN_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Fast-channel not implemented. + !=== - Other errors <> -| 1 | FLAGS | uint32 | -[cols="2,5a"] + +| 1 +| FLAGS +| uint32 +| +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* -! [31:3] ! _Reserved_ -! [2:1] ! Doorbell register width. This field is unused if -doorbell is not supported. +! Bits +! Description + +! [31:3] +! _Reserved_ + +! [2:1] +! Doorbell register width. This field is unused if doorbell is not supported. 0b00: 8 bits 0b01: 16 bits 0b10: 32 bits 0b11: 64 bits + ! [0] ! 0b0: Doorbell not supported 0b1: Doorbell supported !=== -| 2 |PHYS_ADDR_LOW | uint32 | Lower `32 bits` of physical address -| 3 |PHYS_ADDR_HIGH | uint32 | Upper `32 bits` of physical address -| 4 |DB_ADDR_LOW | uint32 | Lower `32 bits` of doorbell address. This field is unused if -doorbell is not supported. -| 5 |DB_ADDR_HIGH | uint32 | Upper `32 bits` of doorbell address. This field is unused if -doorbell is not supported. -| 6 |DB_ID_LOW | uint32 | Lower `32 bits` of doorbell ID. This field is unused if -doorbell is not supported. -| 7 |DB_ID_HIGH | uint32 | Upper `32 bits` of doorbell ID. This field is unused if -doorbell is not supported. -| 8 |DB_PRESERVED_LOW | uint32 | A lower `32 bits` doorbell preserved -mask to apply for this service before ring the doorbell. This field is unused if -doorbell is not supported. -| 9 |DB_PRESERVED_HIGH | uint32 | An upper `32 bits` doorbell preserved -mask to apply for this service before ring the doorbell. This field is only -valid if the doorbell register width is 64 bits. This field is unused if -doorbell is not supported. + +| 2 +|PHYS_ADDR_LOW +| uint32 +| Lower `32 bits` of physical address + +| 3 +| PHYS_ADDR_HIGH +| uint32 +| Upper `32 bits` of physical address + +| 4 +| DB_ADDR_LOW +| uint32 +| Lower `32 bits` of doorbell address. This field is unused if doorbell is not supported. + +| 5 +| DB_ADDR_HIGH +| uint32 +| Upper `32 bits` of doorbell address. This field is unused if doorbell is not supported. + +| 6 +|DB_ID_LOW +| uint32 +| Lower `32 bits` of doorbell ID. This field is unused if doorbell is not supported. + +| 7 +| DB_ID_HIGH +| uint32 +| Upper `32 bits` of doorbell ID. This field is unused if doorbell is not supported. + +| 8 +| DB_PRESERVED_LOW +| uint32 +| A lower `32 bits` doorbell preserved mask to apply for this service before +ring the doorbell. This field is unused if doorbell is not supported. + +| 9 +| DB_PRESERVED_HIGH +| uint32 +| An upper `32 bits` doorbell preserved mask to apply for this service before +ring the doorbell. This field is only valid if the doorbell register width is +64 bits. This field is unused if doorbell is not supported. |=== diff --git a/src/srvgrp-ras-agent.adoc b/src/srvgrp-ras-agent.adoc index c85e0b8..fc5889c 100644 --- a/src/srvgrp-ras-agent.adoc +++ b/src/srvgrp-ras-agent.adoc @@ -22,11 +22,25 @@ Below table lists the services in this group: .RAS Agent Services [cols="1, 3, 2", width=100%, align="center", options="header"] |=== -| Service ID | Service Name | Request Type -| 0x01 | RAS_ENABLE_NOTIFICATION | NORMAL_REQUEST -| 0x02 | RAS_GET_NUM_ERR_SRCS | NORMAL_REQUEST -| 0x03 | RAS_GET_ERR_SRCS_ID_LIST | NORMAL_REQUEST -| 0x04 | RAS_GET_ERR_SRC_DESC | NORMAL_REQUEST +| Service ID +| Service Name +| Request Type + +| 0x01 +| RAS_ENABLE_NOTIFICATION +| NORMAL_REQUEST + +| 0x02 +| RAS_GET_NUM_ERR_SRCS +| NORMAL_REQUEST + +| 0x03 +| RAS_GET_ERR_SRCS_ID_LIST +| NORMAL_REQUEST + +| 0x04 +| RAS_GET_ERR_SRC_DESC +| NORMAL_REQUEST |=== [#ras-notifications] @@ -45,23 +59,45 @@ described in <>. .Request Data [cols="1, 2, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | EVENT_ID | uint32 | Event to be subscribed for -notification. +| Word +| Name +| Type +| Description + +| 0 +| EVENT_ID +| uint32 +| Event to be subscribed for notification. |=== [#table_ras_ennotification_response_data] .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="5,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="5,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Notifications are subscribed successfully. -! RPMI_ERROR_NOT_FOUND ! EVENT_ID is not supported or invalid. -! RPMI_ERROR_NOT_SUPPORTED ! Notifications not supported. +! Error Code +! Description + +! RPMI_SUCCESS +! Notification is subscribed successfully. + +! RPMI_ERR_INVALID_PARAM +! `EVENT_ID` is invalid. + +! RPMI_ERR_NOT_SUPPORTED +! Notification is not supported. + !=== - Other errors <> |=== @@ -77,16 +113,32 @@ This service is used to query number of error sources available in the system. .Response Data [cols="1, 2, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return status code -[cols="2,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="2,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully and number of error sources -returned as NUM_ERR_SRCS. + +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully and number of error sources returned as NUM_ERR_SRCS. + !=== - Other errors <> -| 1 | NUM_ERR_SRCS | uint32 | Number of error sources + +| 1 +| NUM_ERR_SRCS +| uint32 +| Number of error sources. |=== ==== Service: RAS_GET_ERR_SRCS_ID_LIST (SERVICE_ID: 0x03) @@ -98,35 +150,67 @@ descriptor of the error source. .Request Data [cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | START_INDEX | uint32 | Starting index of `RAS_ERR_SRC_ID` list. + -`0` for the first call, subsequent calls will use the next index of the + -remaining items. +| Word +| Name +| Type +| Description + +| 0 +| START_INDEX +| uint32 +| Starting index of `RAS_ERR_SRC_ID` list. `0` for the first call, subsequent +calls will use the next index of the remaining items. |=== [#table_ras_agent_get_err_srcs_id_list_response_data] .Response Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="7,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="7,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully and list of error sources -returned -! RPMI_ERROR_INVALID_PARAMETER ! START_INDEX is not valid +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully and list of error sources returned. + +! RPMI_ERR_INVALID_PARAM +! `START_INDEX` is invalid. + !=== - Other errors <> -| 1 | FLAGS | uint32 | _Reserved_ and must be `0`. -| 2 | REMAINING | uint32 | Remaining number of error source IDs -| 3 | RETURNED | uint32 | Number of error source IDs returned + - in this request -| 4 | RAS_ERR_SRC_ID[N] | uint32 | An array of error source IDs where + - each entry in the -array is a unique error source ID. -N is equal to `RETURNED` number of error source IDs in this request + +| 1 +| FLAGS +| uint32 +| _Reserved_ and must be `0`. + +| 2 +| REMAINING +| uint32 +| Remaining number of error source IDs. + +| 3 +| RETURNED +| uint32 +| Number of error source IDs returned in this request. + +| 4 +| RAS_ERR_SRC_ID[N] +| uint32 +| An array of error source IDs where each entry in the array is a unique error source ID. + +N is equal to `RETURNED` number of error source IDs in this request. |=== ==== Service: RAS_GET_ERR_SRC_DESC (SERVICE_ID: 0x04) @@ -134,43 +218,87 @@ This service returns the error source descriptor of an error source specified by `RAS_ERR_SRC_ID`. [#table_ras_agent_get_err_src_desc_request_data] -[cols="1, 2, 1, 7", width=100%, align="center", options="header"] +[cols="1, 3, 1, 7", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | RAS_ERR_SRC_ID | uint32 | Error source ID for which attributes + - are to be returned -| 1 | BYTE_OFFSET | uint32 | Offset from which the descriptor is + - to be read. Offset `0` for the first call, subsequent byte offset of + - the remaining bytes. +| Word +| Name +| Type +| Description + +| 0 +| RAS_ERR_SRC_ID +| uint32 +| Error source ID for which attributes are to be returned. + +| 1 +| BYTE_OFFSET +| uint32 +| Offset from which the descriptor is to be read. Offset `0` for the first call, +subsequent byte offset of the remaining bytes. |=== [#table_ras_agent_get_err_src_desc_response_data] .Response Data [cols="1, 3, 1, 7a", width=100%, align="center", options="header"] |=== -| Word | Name | Type | Description -| 0 | STATUS | int32 | Return Status Code -[cols="7,5"] +| Word +| Name +| Type +| Description + +| 0 +| STATUS +| int32 +| Return error code + +[cols="7,5", options="header"] !=== -! *Error Code* ! *Description* -! RPMI_SUCCESS ! Service completed successfully and partial/complete error + - source descriptor returned. -! RPMI_ERROR_NOT_FOUND ! Error source with ID `RAS_ERR_SRC_ID` not found -! RPMI_ERROR_INVALID_PARAMETER ! `BYTE_OFFSET` is not valid +! Error Code +! Description + +! RPMI_SUCCESS +! Service completed successfully and partial/complete error source descriptor returned. + +! RPMI_ERR_INVALID_PARAM +! `RAS_ERR_SRC_ID` or `BYTE_OFFSET` is invalid. + !=== - Other errors <> -| 1 | FLAGS | uint32 | [cols="2,5a"] + +| 1 +| FLAGS +| uint32 +| + +[cols="2,5a", options="header"] !=== -! *Bits* ! *Description* -! [3:0] ! Format of the error source descriptor. + - Value `0` indicates that the error source descriptor is in GHESv2 format. + - Rest of the values (1-15) are implementation specific. -! [31:4] ! _Reserved_ +! Bits +! Description + +! [3:0] +! Format of the error source descriptor. Value `0` indicates that the error +source descriptor is in GHESv2 format. Rest of the values (1-15) are +implementation specific. + +! [31:4] +! _Reserved_ + !=== -| 2 | REMAINING | uint32 | Remaining number of bytes to be read -| 3 | RETURNED | uint32 | Number of bytes read in this request -| 4 | ERR_SRC_DESC[N] | uint8 | Full or partial descriptor + - N is equal to the `RETURNED` bytes in this request. + +| 2 +| REMAINING +| uint32 +| Remaining number of bytes to be read. + +| 3 +| RETURNED +| uint32 +| Number of bytes read in this request. + +| 4 +| ERR_SRC_DESC[N] +| uint8 +| Full or partial descriptor N is equal to the `RETURNED` bytes in this request. |=== ==== Error Source Descriptor Format diff --git a/src/srvgrp-system-reset.adoc b/src/srvgrp-system-reset.adoc index bc8623b..94b649c 100644 --- a/src/srvgrp-system-reset.adoc +++ b/src/srvgrp-system-reset.adoc @@ -92,7 +92,7 @@ to them. Supported events are described in <>. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="6,5a", options="header"] !=== @@ -144,7 +144,7 @@ default. System Warm Reset support can be discovered with this service. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="5,5a", options="header"] !=== diff --git a/src/srvgrp-system-suspend.adoc b/src/srvgrp-system-suspend.adoc index 61afec5..59c3f66 100644 --- a/src/srvgrp-system-suspend.adoc +++ b/src/srvgrp-system-suspend.adoc @@ -85,7 +85,7 @@ to them. Supported events are described in <>. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="6,5a", options="header"] !=== @@ -136,7 +136,7 @@ if a `SUSPEND_TYPE` supports resume address. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="5,5a", options="header"] !=== @@ -239,7 +239,7 @@ after the `WFI` instruction. | 0 | STATUS | int32 -| Return Error Code +| Return error code [cols="6,5a", options="header"] !===