Skip to content

Latest commit

 

History

History
359 lines (291 loc) · 7.8 KB

srvgrp-ras-agent.adoc

File metadata and controls

359 lines (291 loc) · 7.8 KB

Service Group - RAS_AGENT (SERVICEGROUP_ID: 0x000B)

The RAS_AGENT service group provides services to enumerate various error sources in a system and to retrieve their descriptors.

Each error source in a system is assigned a unique 32-bit identification number, referred to as RAS_ERR_SRC_ID.

The following table lists the services in the RAS_AGENT service group:

Table 1. RAS Agent Services
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

Error Source Descriptor Format

ACPI Systems

For systems that support ACPI/APEI, the format of the error source descriptor is as defined in ACPI specification v6.4 or above, (GHESv2) cite:[ACPI]. If the value of RAS_GET_ERR_SRC_DESC.FLAGS[3:0] is 0, it indicates that the error source descriptor format is GHESv2.

The RAS agent populates the error source descriptor fields according to the error source specified by RAS_ERR_SRC_ID.

Note
The error source descriptor has an error_status_structure field which is a generic address structure (GAS) as defined in ACPI v6.4 (GHESv2) cite:[ACPI]. This field specifies the location of a register that contains the physical address of a block of memory that holds the error status data for the specified error source. This block of memory is referred to as error_status_block. The allocation of error_status_block is platform dependent and is done by the RAS agent. The physical address of error_status_block is stored in the error_status_structure field of the error source descriptor being returned.
Non-ACPI Systems

RAS is not standardized for non-ACPI systems. Such systems may define custom format for an error source descriptor. The type of custom error source descriptor format can be read from RAS_GET_ERR_SRC_DESC.FLAGS[3:0]. The values from 1 to 15 are reserved for the custom format types.

Notifications

This service group does not support any events for notification.

Service: RAS_ENABLE_NOTIFICATION (SERVICE_ID: 0x01)

This service allows the application processor to subscribe to RAS_AGENT service group notifications. The platform may optionally support notifications for events that may occur. The platform microcontroller can send these notification messages to the application processor if they are implemented and the application processor has subscribed to them. The supported events are described in Notifications.

Table 2. Request Data
Word Name Type Description

0

EVENT_ID

uint32

The event to be subscribed for notification.

1

REQ_STATE

uint32

Requested event notification state
Change or query the current state of EVENT_ID notification.

0: Disable
1: Enable
2: Return current state.

Any other values of REQ_STATE field other than the defined ones are reserved for future use.

Table 3. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

Error Code Description

RPMI_SUCCESS

Event is subscribed successfully.

RPMI_ERR_INVALID_PARAM

EVENT_ID or REQ_STATE is invalid.

RPMI_ERR_NOT_SUPPORTED

Notification is not supported.

1

CURRENT_STATE

uint32

Current EVENT_ID notification state

0: Notification is disabled
1: Notification is enabled.

In case of REQ_STATE = 0 or 1, the CURRENT_STATE will return the requested state.
In case of an error, the value of CURRENT_STATE is unspecified.

Service: RAS_GET_NUM_ERR_SRCS (SERVICE_ID: 0x02)

This service queries number of error sources available in the system.

Table 4. Request Data
NA
Table 5. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

Error Code Description

RPMI_SUCCESS

Service completed successfully and number of error sources returned as NUM_ERR_SRCS.

1

NUM_ERR_SRCS

uint32

Number of error sources.

Service: RAS_GET_ERR_SRCS_ID_LIST (SERVICE_ID: 0x03)

This service returns a list of RAS_ERR_SRC_ID for all error sources present in the system. The RAS_ERR_SRC_ID can be used to get the associated descriptor of the error source.

Table 6. Request Data
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 7. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

Error Code Description

RPMI_SUCCESS

Service completed successfully and list of error sources returned.

RPMI_ERR_INVALID_PARAM

START_INDEX is invalid.

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)

This service retrieves the error source descriptor of an error source specified by RAS_ERR_SRC_ID.

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 8. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

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.

1

FLAGS

uint32

Bits Description

[31:4]

Reserved and must be 0.

[3:0]

Format of the error source descriptor. Value 0 indicates that the error source descriptor is in GHESv2 format. Rest of the values from 1 to 15 are implementation specific.

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.