ide_test.ini spec
December 4, 2025 · View on GitHub
TEE-IO Device Validation Utility reads ide_test.ini to get the information, such as root port dev/func, endpoint dev/func, topology, etc. Its structure refers to IdeKmTestCase, IdeKmTestConfiguration and IdeKmTestTopology
There are 6 sections in the ide_test.ini.
- Main
- Ports
- Switch_x (x is in [1,16])
- Topology_x (x is in [1,16])
- Configuration_x (x is in [1,32])
- TestSuite_x (x is in [1,32])
Format
[SectionName]
EntryName=EntryValue
Where:
1) SectionName is an ASCII string. The valid format is [A-Za-z0-9_]+
2) EntryName is an ASCII string. The valid format is [A-Za-z0-9_]+
3) EntryValue can be:
3.1) an ASCII String. The valid format is [A-Za-z0-9_.,:]+
3.2) a GUID. The valid format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, where x is [A-Fa-f0-9]
3.3) a decimal value. The valid format is [0-9]+
3.4) a hexadecimal value. The valid format is 0x[A-Fa-f0-9]+
4) '#' or ';' can be used as comment at anywhere.
5) TAB(0x20) or SPACE(0x9) can be used as separator.
6) LF(\n, 0xA) or CR(\r, 0xD) can be used as line break.
Descriptions of sections
[Main]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| pci_log | 0/1 | 0 | O | enable pci log if 1 |
| libspdm_log | 0/1 | 0 | O | enable libspdm log if 1 |
| debug_level | verbose/info/warn/error | warn | O | debug level |
| pcap_enable | 0/1 | 0 | O | enable pcap capture if 1 |
| doe_log | 0/1 | 0 | O | enable doe log if 1 |
[Ports]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| rootport_x | dev/func string | M | For example 02.0. x in [1, 16] | |
| endpoint_y | dev/func string | M | For example 00.0. y in [1, 16] |
[Switch_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| port_y | dev/func string | M | For example 00.0. y in [1, 16] |
TEE-IO Device Validation Utility supports multiple test categories.
Settings of Topology / Configuration / TestSuite are different.
- PCIE-IDE Section settings
- TDISP Section settings
- CXL-IDE Section settings
- CXL-TSP Section settings
- SPDM Section settings
PCIE-IDE Section settings
[Topology_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are: selective_ide, link_ide, selective_and_link_ide | |
| connection | string | M | available values are: direct, switch | |
| segment | hex | M | The segment which rootport is connected to. For example 0x0000 | |
| bus | hex | M | The bus which rootport is connected to. For example 0x1a | |
| path1 | string | M | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_2,endpoint_2 | |
| path2 | string | O | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_3,endpoint_3. Note: path2 is only available in the connection of peer2peer | |
| stream_id | number | 0 | O | it shall be in [0, 255] |
[Configration_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are selective_ide, link_ide, selective_and_link_ide | |
| category | string | pcie-ide | O | must be pcie-ide |
| default | 0/1 | 1 | O | |
| switch | 0/1 | 0 | O | |
| partial_header_encryption | 0/1 | 0 | O | |
| pcrc | 0/1 | 0 | O | |
| aggregation | 0/1 | 0 | O | |
| selective_ide_for_configuration | 0/1 | 0 | O | |
| tee_limited_stream | 0/1 | 0 | O | |
| flit_mode_disable | 0/1 | 0 | O |
[TestSuite_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are: selective_ide, link_ide, selective_and_link_ide | |
| category | string | pcie-ide | O | must be pcie-ide |
| topology | number | M | Topology_x | |
| configuration | number | M | Configuration_x | |
| query | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in Query.md | |
| KeyProg | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in keyProg.md | |
| KSetGo | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in KSetGo.md | |
| KSetStop | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in KSetStop.md | |
| SpdmSession | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in SpdmSession.md |
CXL-IDE Section settings
[Topology_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| connection | string | M | available values are: direct, switch | |
| segment | hex | M | The segment which rootport is connected to. For example 0x0000 | |
| bus | hex | M | The bus which rootport is connected to. For example 0x1a | |
| path1 | string | M | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_2,endpoint_2 | |
| path2 | string | O | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_3,endpoint_3. Note: path2 is only available in the connection of peer2peer | |
| stream_id | number | 0 | O | it shall always be 0 |
[Configration_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| category | string | M | must be cxl-ide | |
| cxl_ide_mode | string | containment | O | available values are containment or skid |
| default | 0/1 | 1 | O | |
| pcrc_disable | 0/1 | 0 | O | |
| ide_stop | 0/1 | 0 | O | |
| cxl_get_key | 0/1 | 0 | O | Generate keys by IDEKM GET_KEY when setting up CXL.memcache IDE Stream. |
[TestSuite_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| category | string | M | must be cxl-ide | |
| topology | number | M | Topology_x | |
| configuration | number | M | Configuration_x | |
| query | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in CxlQuery.md | |
| KeyProg | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in CxlKeyProg.md | |
| KSetGo | string | O | numbers separated by comma. For example 1 means Cases1 in CxlKSetGo.md | |
| KSetStop | string | O | numbers separated by comma. For example 1 means Cases1 in CxlKSetStop.md | |
| GetKey | string | O | numbers separated by comma. For example 1 means Cases1 in CxlGetKey.md |
CXL-TSP Section settings
[Topology_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| connection | string | M | available values are: direct, switch | |
| segment | hex | M | The segment which rootport is connected to. For example 0x0000 | |
| bus | hex | M | The bus which rootport is connected to. For example 0x1a | |
| path1 | string | M | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_2,endpoint_2 | |
| path2 | string | O | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_3,endpoint_3. Note: path2 is only available in the connection of peer2peer | |
| stream_id | number | 0 | O | it shall always be 0 |
[Configration_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| category | string | M | must be cxl-tsp | |
| default | 0/1 | 1 | O |
[TestSuite_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| category | string | M | must be cxl-tsp | |
| topology | number | M | Topology_x | |
| configuration | number | M | Configuration_x | |
| GetVersion | string | O | numbers separated by comma. For example 1 means Case1 in GetTargetTspVersionResponse.md | |
| GetCaps | string | O | numbers separated by comma. For example 1 means Case1 in GetTargetTspCapabilitiesResponse.md | |
| SetConfiguration | string | O | numbers separated by comma. For example 1 means Case1 in SetTargetTspConfigurationResponse.md | |
| GetConfiguration | string | O | numbers separated by comma. For example 1 means Case1 in GetTargetTspConfigurationResponse.md | |
| GetConfigurationReport | string | O | numbers separated by comma. For example 1 means Case1 in GetTargetTspConfigurationReportResponse.md | |
| LockConfiguration | string | O | numbers separated by comma. For example 1,2 means Case1 and Case2 in LockTargetTspConfigurationResponse.md |
SPDM Section settings
[Topology_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | must be link_ide | |
| connection | string | M | available values are: direct, switch | |
| segment | hex | M | The segment which rootport is connected to. For example 0x0000 | |
| bus | hex | M | The bus which rootport is connected to. For example 0x1a | |
| path1 | string | M | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_2,endpoint_2 | |
| path2 | string | O | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_3,endpoint_3. Note: path2 is only available in the connection of peer2peer |
[Configration_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| category | string | spdm | M | must be spdm |
[TestSuite_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| category | string | spdm | M | must be spdm |
| topology | number | M | Topology_x | |
| configuration | number | M | Configuration_x | |
| Version | string | O | numbers separated by comma. For example 1 means Cases1 in Version.md | |
| Capabilities | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in Capabilities.md | |
| Algorithms | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in Algorithms.md | |
| Certificate | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in Certificate.md | |
| Measurements | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in Measurements.md | |
| KeyExchangeRsp | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in KeyExchangeRsp.md | |
| FinishRsp | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in FinishRsp.md | |
| EndSessionAck | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in EndSessionAck.md |
TDISP Section settings
[Topology_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are: selective_ide, link_ide, selective_and_link_ide | |
| connection | string | M | available values are: direct, switch | |
| segment | hex | M | The segment which rootport is connected to. For example 0x0000 | |
| bus | hex | M | The bus which rootport is connected to. For example 0x1a | |
| tdisp_function_id | hex | 0x0 | O | FUNCTION_ID of the device hosting the TDI. Refer to PCIE/TDISP spec for more detailed information |
| path1 | string | M | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_2,endpoint_2 | |
| path2 | string | O | rootport_x to endpoint_y. Each ports are separated by ‘,’. For example: rootport_1,switch_1:port_1-port_3,endpoint_3. Note: path2 is only available in the connection of peer2peer | |
| stream_id | number | 0 | O | it shall be in [0, 255] |
[Configration_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are selective_ide, link_ide, selective_and_link_ide | |
| category | string | tdisp | M | must be tdisp |
[TestSuite_x]
| Entry | Value | Default | Mandatory | Comment |
|---|---|---|---|---|
| type | string | M | available values are: selective_ide, link_ide, selective_and_link_ide | |
| category | string | tdisp | M | must be tdisp |
| topology | number | M | Topology_x | |
| configuration | number | M | Configuration_x | |
| Version | string | O | numbers separated by comma. For example 1 means Cases1 in TdispVersion.md | |
| Capabilities | string | O | numbers separated by comma. For example 1 means Cases1 in TdispCapabilities.md | |
| LockInterface | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in LockInterfaceResponse.md | |
| DeviceReport | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in DeviceInterfaceReport.md | |
| DeviceState | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in DeviceInterfaceState.md | |
| StartInterface | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in StartInterfaceResponse.md | |
| StopInterface | string | O | numbers separated by comma. For example 1,2 means Cases1 and Cases2 in StopInterfaceResponse.md |