Flexible protocol for exchanging structured data objects between host and device
DOE (Data Object Exchange) is a generic mailbox mechanism that enables software to exchange structured data objects with PCIe devices. It provides a standard framework for vendor-specific and PCI-SIG defined protocols.
| Offset | Register | Description |
|---|---|---|
| 00h | Extended Cap Header | ID = 002Eh |
| 04h | DOE Capabilities | Interrupt support |
| 08h | DOE Control | Go, Abort, Int Enable |
| 0Ch | DOE Status | Busy, Error, Ready, Int Status |
| 10h | DOE Write Data Mailbox | Request data input |
| 14h | DOE Read Data Mailbox | Response data output |
DOE Data Object Header (First DW):
┌──────────────────────────────────────────────────────────────┐
│ Bits 31:24 │ Bits 23:16 │ Bits 15:0 │
│ Reserved │ Object Type │ Vendor ID │
└──────────────────────────────────────────────────────────────┘
DOE Data Object Header (Second DW):
┌──────────────────────────────────────────────────────────────┐
│ Bits 31:18 │ Bits 17:0 │
│ Reserved │ Length (in DWs, including header) │
└──────────────────────────────────────────────────────────────┘
Vendor ID:
- 0001h = PCI-SIG defined protocols
- Other = Vendor specific
Software Device
│ │
│ 1. Check DOE Status (not busy) │
│ ◄─────────────────────────────────────│
│ │
│ 2. Write request to DOE Write Mailbox │
│ (header + payload, one DW at time) │
│ ─────────────────────────────────────►│
│ │
│ 3. Set GO bit in DOE Control │
│ ─────────────────────────────────────►│
│ │
│ 4. Poll DOE Status for Data Ready │
│ ◄─────────────────────────────────────│
│ │
│ 5. Read response from DOE Read Mailbox│
│ (one DW at a time until length) │
│ ◄─────────────────────────────────────│
Discovery Request Object:
┌──────────────────────────────────────────────────────────────┐
│ DW0: Vendor ID = 0001h, Type = 00h (Discovery) │
│ DW1: Length = 3 │
│ DW2: Index = N (which protocol to query) │
└──────────────────────────────────────────────────────────────┘
Discovery Response Object:
┌──────────────────────────────────────────────────────────────┐
│ DW0: Vendor ID = 0001h, Type = 00h │
│ DW1: Length = 3 │
│ DW2: Discovered Vendor ID (15:0), Type (23:16), Next (31:24) │
└──────────────────────────────────────────────────────────────┘
Next Index:
- FFh = No more protocols
- Other = Index for next discovery request
| Type | Protocol |
|---|---|
| 00h | DOE Discovery |
| 01h | CMA-SPDM |
| 02h | Secured CMA-SPDM |
DOE is the foundation for PCIe security features: