RPMC Support Using eSPI OOB (eRPMC)
Architecture Specification
Read RPMC Parameters
This command is used to read RPMC parameters values.
RPMC Parameter table is as defined below:
Bits | Description |
31:8 | Reserved |
7:4 | Document Version. Default=0. |
3:0 | Num_RPMC: Number of supported RPMC Devices (Note) |
RPMC Parameters, RPMC Device n:
Bits | Description |
31:28 | Update_Rate: Rate of update = 5*(2**Update_Rate) seconds |
27:26 | RPMC Device |
25 | MC_Size: 0= Monotonic counter size is 32 bits, 1=Reserved. Default =0. |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. |
23:16 | Reserved |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 (Note) |
- If RPMC is supported in FW in the EC device only, reports one device and number of supported counters. Num_RPMC is zero if RPMC is not supported in EC device.
- If RPMC is supported by EC device and/or the EC device passing commands to SPI RPMC devices, reports the number of flash devices supported and the number of monotonic counters in each RPMC device.
Read RPMC Parameters Command:
Byte # | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
0 | eSPI Cycle Type: OOB Message=21h | |||||||||||
1 | Tag[3:0]=0h | Length[11:8]=0h | ||||||||||
2 | Length[7:0]=0Bh | |||||||||||
3 | Dest Slave Addr[7:1]=07h | 0 | ||||||||||
4 | Command Code=0Fh | |||||||||||
5 | Byte Count=08h | |||||||||||
6 | Source Slave Address[7:1]= 08h | 1 | ||||||||||
7 | MCTP Reserved=0h | Header Version | ||||||||||
8 | Destination Endpoint ID | |||||||||||
9 | Source Endpoint ID | |||||||||||
10 | SOM | EOM | Packet Seq # | TO | Message Tag | |||||||
11 | IC | Message Type=7Dh | ||||||||||
12 | RPMC Device= 00h | |||||||||||
13 | Opcode = 9Fh | |||||||||||
Response:
Byte # | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
0 | eSPI Cycle Type: OOB Message=21h | ||||||||||||
1 | Tag[3:0]=0h | Length[11:8]=0h | |||||||||||
2 | Length[7:0]=12h | ||||||||||||
3 | Dest Slave Addr[7:1]=08h | 0 | |||||||||||
4 | Command Code=0Fh | ||||||||||||
5 | Byte Count=0Fh | ||||||||||||
6 | Source Slave Address[7:1]= 07h | 1 | |||||||||||
7 | MCTP Reserved=0h | Header Version | |||||||||||
8 | Destination Endpoint ID | ||||||||||||
9 | Source Endpoint ID | ||||||||||||
10 | SOM | EOM | Packet Seq # | TO | Message Tag | ||||||||
11 | IC | Message Type=7Dh | |||||||||||
12 | Extended Status[7:0] | ||||||||||||
13 | RPMC Parameter Table[31:24] | ||||||||||||
… | … | ||||||||||||
16 | RPMC Parameter Table[7:0] | ||||||||||||
17 | RPMC Parameters, RPMC Device 0[31:24] | ||||||||||||
… | … | ||||||||||||
20 | RPMC Parameters, RPMC Device 0[7:0] | ||||||||||||
If the received transaction has errors, the device does not execute the transaction and posts the corresponding error in extended status.
Expected Extended Status [7:0] results:
Extended Status [7:0] | Description |
10000000 | Successful completion. |
0XXXXXX1 | N/A. This bit cannot be read as 1, eRPMC not supported. |
0XXXXX1X | This bit is only set when incorrect payload size is received. |
Examples of RPMC Devices Supported
The following show examples of different RPMC devices (EC, SPI flash devices or both). Parameter table values and relevant MCTP command parameters for each example are shown.
EC is RPMC Device
RPMC Parameter Table:
Bits | Description | Value |
31:8 | Reserved | 000000h |
7:4 | Document Version. Default=0. | 0h |
3:2 | Reserved | 00b |
1:0 | Num_RPMC: Number of supported RPMC Devices | 01b |
RPMC Parameters, RPMC Device 0:
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 00b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | 0-FFh |
RPMC OOB Command Parameters, RPMC Device 0:
Parameter | Value |
RPMC Device | 00h |
Counter Addr[7:0] | 00h-FFh |
Two RPMC SPI Flash Devices, Each with Four Monotonic Counters
RPMC Parameter Table:
Bits | Description | Value |
31:8 | Reserved | 000000h |
7:4 | Document Version. Default=0. | 0h |
3:2 | Reserved | 00b |
1:0 | Num_RPMC: Number of supported RPMC Devices | 02b |
RPMC Parameters, RPMC Device 0:
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 00b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | 03h |
RPMC OOB Command Parameters, RPMC Device 0:
Parameter | Value |
RPMC Device | 00h |
Counter Addr[7:0] | 00h-03h |
RPMC Parameters, RPMC Device 1:
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 01b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | 03h |
RPMC OOB Command Parameters, RPMC Device 1:
Parameter | Value |
RPMC Device | 01h |
Counter Addr[7:0] | 00h-03h |
EC as RPMC Device and Two SPI RPMC Flash Devices
RPMC Parameter Table:
Bits | Description | Value |
31:8 | Reserved | 000000h |
7:4 | Document Version. Default=0. | 0h |
3:2 | Reserved | 00b |
1:0 | Num_RPMC: Number of supported RPMC Devices | 03b |
RPMC Parameters, RPMC Device 0 (EC):
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 00b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | FFh |
RPMC OOB Command Parameters, RPMC Device 0 (EC):
Parameter | Value |
RPMC Device | 00h |
Counter Addr[7:0] | 00h-FFh |
RPMC Parameters, RPMC Device 1:
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 01b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | 03h |
RPMC OOB Command Parameters, RPMC Device 1:
Parameter | Value |
RPMC Device | 01h |
Counter Addr[7:0] | 00h-03h |
RPMC Parameters, RPMC Device 2:
Bits | Description | Value |
31:28 | Update_Rate | 0h |
27:26 | RPMC Device | 02b |
25 | MC_Size | 0b |
24 | SHA_Size: 0=SHA-256, 1=SHA-384. Default =0. | 0b |
23:16 | Reserved | 00h |
15:8 | OP1: OP1 Opcode for RPMC Devices. Default= 9Bh | 9Bh |
7:0 | Num_Counter-1: Number of supported Monotonic Counters-1 | 03h |
RPMC OOB Command Parameters, RPMC Device 2:
Parameter | Value |
RPMC Device | 02h |
Counter Addr[7:0] | 00h-03h |