-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add RPMI MPXY Integration chapter #49
Changes from all commits
e5e6d26
a28c537
c15e8f4
4d1403f
81c915f
aca7bbb
e89a2bc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
== Changelog | ||
|
||
|
||
[%hardbreaks] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
:path: src/ | ||
:imagesdir: ../images | ||
|
||
ifdef::rootpath[] | ||
:imagesdir: {rootpath}{path}{imagesdir} | ||
endif::rootpath[] | ||
|
||
ifndef::rootpath[] | ||
:rootpath: ./../ | ||
endif::rootpath[] | ||
|
||
== RPMI Integration with SBI MPXY Extension | ||
The SBI MPXY (Message Proxy) extension is defined by the RISC-V SBI Specification | ||
cite:[SBI] for sending and receiving the message data from the S-mode. | ||
|
||
.RPMI and MPXY Integration | ||
image::mpxy-rpmi.png[350,350, align="center"] | ||
|
||
RPMI service groups that are M-mode only, including BASE, which is an exception | ||
must not be accessible via SBI MPXY interface. A MPXY channel | ||
corresponds to a single RPMI service group bound to that MPXY channel. | ||
|
||
The following table lists the RPMI message protocol specific attributes for | ||
a MPXY channel. | ||
|
||
[#table_rpmi_mpxy_attributes] | ||
.RPMI Attributes for MPXY Channel | ||
[cols="3, 2, 1, 3", width=100%, align="center", options="header"] | ||
|=== | ||
| Attribute Name | ||
| Attribute ID | ||
| Access | ||
| Description | ||
|
||
| SERVICEGROUP_ID | ||
| 0x80000000 | ||
| RO | ||
| RPMI service group ID | ||
|
||
| SERVICEGROUP_VERSION | ||
| 0x80000001 | ||
| RO | ||
| RPMI service group version | ||
|=== | ||
|
||
TODO: Link to the MPXY Extension chapter in SBI spec (does not exist in SBI spec) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,33 +21,96 @@ their implementation-specific service groups. | |
|
||
All service groups except the BASE service group are optional. If a service | ||
group is implemented, it must implement all its services except a dedicated | ||
notification service (`SERVICE_ID: 0x00`) meant to deliver events. | ||
A service group must not implement defined services partially unless it also | ||
defines a mechanism to discover its implemented services. | ||
notification service (`SERVICE_ID: 0x00`) meant to deliver events. A service | ||
group must not implement defined services partially unless it also defines a | ||
mechanism to discover its implemented services. | ||
|
||
If a service group defines events then it must also implement notification | ||
service (`SERVICE_ID: 0x00`). | ||
service (`SERVICE_ID: 0x00`). Each service group has another dedicated | ||
service with (`SERVICE_ID = 0x01`) to subscribe to events for notification. | ||
|
||
If the `BASE_PROBE_SERVICE_GROUP` service indicates that a service group is | ||
implemented and returns the implemented version, then the service group | ||
version must conform to the version returned by the `BASE_GET_SPEC_VERSION`. | ||
|
||
|
||
The following table lists the service groups. | ||
|
||
[#table_service_groups] | ||
.RPMI Service Groups | ||
[cols="2, 4", width=100%, align="center", options="header"] | ||
[cols="2, 2, 4, 3", width=100%, align="center", options="header"] | ||
|=== | ||
| Service Group ID | Service Group Name | ||
| 0x0001 | BASE | ||
| 0x0002 | SYSTEM_RESET | ||
| 0x0003 | SYSTEM_SUSPEND | ||
| 0x0004 | HART_STATE_MANAGEMENT | ||
| 0x0005 | CPPC | ||
| 0x0006 | VOLTAGE | ||
| 0x0007 | CLOCK | ||
| 0x0008 | DEVICE_POWER | ||
| 0x0009 | PERFORMANCE | ||
| 0x000A | MANAGEMENT_MODE | ||
| 0x000B | RAS_AGENT | ||
| 0x000C - 0x7FFF | _Reserved for future use_ | ||
| 0x8000 - 0xFFFF | _Implementation specific service groups_ | ||
| Service Group ID | ||
| Version (Major:Minor) | ||
| Service Group Name | ||
| RISC-V Privilege Mode | ||
|
||
| 0x0001 | ||
| | ||
| BASE | ||
| M-mode, S-mode | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the get privilege level service, it only has M-mode and Non M-mode. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, We are fixing the Base service group attribute to convey whats possible, and by Non-M-Mode we can encompass what may be possible in future. This table is explicit about whats "currently" possible. And this table is also in constant update if anything changes in future |
||
|
||
| 0x0002 | ||
| | ||
| SYSTEM_RESET | ||
| M-mode | ||
|
||
| 0x0003 | ||
| | ||
| SYSTEM_SUSPEND | ||
| M-mode | ||
|
||
| 0x0004 | ||
| | ||
| HART_STATE_MANAGEMENT | ||
| M-mode | ||
|
||
| 0x0005 | ||
| | ||
| CPPC | ||
| M-mode, S-mode | ||
|
||
| 0x0006 | ||
| | ||
| VOLTAGE | ||
| M-mode, S-mode | ||
|
||
| 0x0007 | ||
| | ||
| CLOCK | ||
| M-mode, S-mode | ||
|
||
| 0x0008 | ||
| | ||
| DEVICE_POWER | ||
| M-mode, S-mode | ||
|
||
| 0x0009 | ||
| | ||
| PERFORMANCE | ||
| M-mode, S-mode | ||
|
||
| 0x000A | ||
| | ||
| MANAGEMENT_MODE | ||
| M-mode, S-mode | ||
|
||
| 0x000B | ||
| | ||
| RAS_AGENT | ||
| M-mode, S-mode | ||
|
||
| 0x000C - 0x7FFF | ||
| | ||
| _Reserved for Future Use_ | ||
| | ||
|
||
| 0x8000 - 0xFFFF | ||
| | ||
| _Implementation Specific Service Groups_ | ||
| | ||
|=== | ||
|
||
NOTE: The services listed within each service group do not have a specific order. | ||
Additionally, the sequence in which services are defined in the specification | ||
does not necessarily reflect the order in which they should be called in the | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This mean BASE service group can't use SBI MPXY interface?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought we want allow BASE via MPXY after that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S-mode software can get some basic information of RPMI, such as RPMI version etc..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few things to consider -
RPMI Base was never meant for the MPXY. RPMI base group only and only manages a RPMI context. MPXY channel is not a RPMI context. Its not even a RPMI transport. But you are right that these details are required and thats why we have attributes in the MPXY channel.
From your comment i just added Service group version as an attribute also in the MPXY chapter. So, all these things like RPMI
version and service group version whatever is required by a MPXY client using RPMI, has to be via channel attributes, either Standard or Message Proto specific attributes.