EXTENSIBILITY

Data Object Exchange (DOE)

Flexible protocol for exchanging structured data objects between host and device

1. What is DOE?

What is Data Object Exchange?

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.

DOE Protocols

2. Why DOE?

Benefits

Use Cases

3. DOE Extended Capability

Capability Structure

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

4. DOE Protocol

Data Object Header

    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

Exchange Flow

    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)    │
       │ ◄─────────────────────────────────────│

5. DOE Discovery Protocol

Discovery Request

    Discovery Request Object:
    ┌──────────────────────────────────────────────────────────────┐
    │ DW0: Vendor ID = 0001h, Type = 00h (Discovery)               │
    │ DW1: Length = 3                                              │
    │ DW2: Index = N (which protocol to query)                     │
    └──────────────────────────────────────────────────────────────┘

Discovery Response

    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

6. PCI-SIG Defined Protocols

Type Protocol
00h DOE Discovery
01h CMA-SPDM
02h Secured CMA-SPDM

7. DOE and Security

DOE is the foundation for PCIe security features: