Skip to content

Latest commit

 

History

History
280 lines (232 loc) · 6.95 KB

srvgrp-request-forward.adoc

File metadata and controls

280 lines (232 loc) · 6.95 KB

Service Group - REQUEST_FORWARD (SERVICEGROUP_ID: 0x000C)

The REQUEST_FORWARD service group allows application processors to retrieve and process RPMI request messages which are forwarded by platform microcontroller from some other RPMI client. This service group also allows an SBI implementation to forward RPMI request messages from one system-level partition (or domain) to another using the SBI MPXY extension cite:[SBI].

The platform microcontroller (or SBI implementation) should maintain a first-in first-out queue of forwarded RPMI request messages. The first (or oldest) forwarded RPMI request message in the queue is referred to as the current forwarded RPMI request message. The RPMI services defined by the REQUEST_FORWARD service group allow application processors to retrieve and process one forwarded RPMI request message at a time.

The Request Forward Services below lists the services defined by the REQUEST_FORWARD service group:

Table 1. Request Forward Services
Service ID Service Name Request Type

0x01

REQFWD_ENABLE_NOTIFICATION

NORMAL_REQUEST

0x02

REQFWD_RETRIEVE_CURRENT_MESSAGE

NORMAL_REQUEST

0x03

REQFWD_COMPLETE_CURRENT_MESSAGE

NORMAL_REQUEST

Notifications

The Request Forward Notification Events below lists the notification events defined by the REQUEST_FORWARD service group.

Table 2. Request Forward Notification Events
Event ID Name Event Data Description

0x01

REQFWD_NEW_MESSAGE

An array of N bytes representing the first N bytes of the current forwarded RPMI request message. The value N is specified by the EVENT_DATALEN field of the RPMI notification event as shown in [table_notification_message_format].

This RPMI notification event represents the arrival of a new forwarded RPMI request message when there were no other pending forwarded RPMI request message in the queue.

Service: REQFWD_ENABLE_NOTIFICATION (SERVICE_ID: 0x01)

This service allows the application processor to subscribe to REQUEST_FORWARD 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 3. 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 4. 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: REQFWD_RETRIEVE_CURRENT_MESSAGE (SERVICE_ID: 0x02)

This service allows application processors to retrieve the current forwarded RPMI request message. The current message may be the oldest forwarded RPMI request message in the platform microcontroller (or SBI implementation) queue.

Table 5. Request Data
Word Name Type Description

0

START_INDEX

uint32

Starting index of first byte of the current forwarded RPMI request message. Use 0 for the first call, subsequent calls will use the next index of the remaining bytes.

Table 6. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

Error Code Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERR_INVALID_PARAM

START_INDEX is invalid.

RPMI_ERR_NO_DATA

No forwarded RPMI request message available.

1

REMAINING

uint32

Remaining number of bytes in the current forwarded RPMI request message.

2

RETURNED

uint32

Number of bytes N of the current forwarded RPMI request message returned in this request.

3

REQUEST_MESSAGE[N]

uint8

An array of N bytes representing a part of the current forwarded RPMI request message at byte offset specified by START_INDEX.

Service: REQFWD_COMPLETE_CURRENT_MESSAGE (SERVICE_ID: 0x03)

This service allows the application processors to inform the platform microcontroller (or SBI implementation) that:

  • The processing of the current forwarded RPMI request message has completed and RPMI response message must be sent to the original source of RPMI request message.

  • The current forwarded RPMI request message must now point to the next forwarded RPMI request message if available.

Table 7. Request Data
Word Name Type Description

0

RESPONSE_DATA[N]

uint8

An array of bytes representing the RPMI message data to be send as response data for the current forwarded RPMI request message. The N represents the total number of bytes in the response data which can be inferred by the platform microcontroller (or SBI implementation) from the overall size of the REQFWD_COMPLETE_CURRENT_MESSAGE service message.

Table 8. Response Data
Word Name Type Description

0

STATUS

int32

Return error code

Error Code Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERR_NO_DATA

No forwarded RPMI request message available.