3.LockInterfaceResponse.md
July 10, 2024 ยท View on GitHub
3. Test Case for LOCK_INTERFACE_RESPONSE
Case 3.1
Description: TDISP responder shall return valid LOCK_INTERFACE_RESPONSE, if it receives a LOCK_INTERFACE_REQUEST in CONFIG_UNLOCKED state.
TestSetup:
- Requester -> GET_TDISP_VERSION {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_VERSION <- Responder
- Requester -> GET_TDISP_CAPABILITIES {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_CAPABILITIES <- Responder
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- DEVICE_INTERFACE_STATE <- Responder
- If DEVICE_INTERFACE_STATE.TDI_STATE != CONFIG_UNLOCKED, then skip the test.
- Setup IDE Key with IDE_KM protocol for default_Selective_IDE_Stream_ID.
TestTeardown:
- Requester -> STOP_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- STOP_INTERFACE_RESPONSE <- Responder
Steps:
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=default_Selective_IDE_Stream_ID, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- TdispMessage <- Responder
Assertion 3.1.1: sizeof(TdispMessage) == sizeof(LOCK_INTERFACE_RESPONSE)
Assertion 3.1.2: TdispMessage.MessageType == LOCK_INTERFACE_RESPONSE
Assertion 3.1.3: TdispMessage.TDISPVersion == 0x10
Assertion 3.1.4: TdispMessage.INTERFACE_ID == LOCK_INTERFACE_REQUEST.INTERFACE_ID
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TdispMessage <- Responder
Assertion 3.1.5: TdispMessage.TDI_STATE == CONFIG_LOCKED
Case 3.2
Description: TDISP responder shall return TDISP_ERROR(INVALID_REQUEST), if it receives a LOCK_INTERFACE_REQUEST when IDE Key is NOT configured.
TestSetup:
- Requester -> GET_TDISP_VERSION {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_VERSION <- Responder
- Requester -> GET_TDISP_CAPABILITIES {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_CAPABILITIES <- Responder
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- DEVICE_INTERFACE_STATE <- Responder
- If DEVICE_INTERFACE_STATE.TDI_STATE != CONFIG_UNLOCKED, then skip the test.
- Skip the IDE Key setup with IDE_KM protocol in this SPDM session.
TestTeardown:
- Requester -> STOP_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- STOP_INTERFACE_RESPONSE <- Responder
Steps:
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=0, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- TdispMessage <- Responder
Assertion 3.2.1: sizeof(TdispMessage) == sizeof(TDISP_ERROR)
Assertion 3.2.2: TdispMessage.MessageType == TDISP_ERROR
Assertion 3.2.3: TdispMessage.TDISPVersion == 0x10
Assertion 3.2.4: TdispMessage.INTERFACE_ID == LOCK_INTERFACE_REQUEST.INTERFACE_ID
Assertion 3.2.5: TdispMessage.ERROR_CODE == INVALID_REQUEST
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TdispMessage <- Responder
Assertion 3.2.6: TdispMessage.TDI_STATE == CONFIG_UNLOCKED
Case 3.3
Description: TDISP responder shall return TDISP_ERROR(INVALID_INTERFACE_STATE), if it receives a LOCK_INTERFACE_REQUEST in CONFIG_LOCKED state.
TestSetup:
- Requester -> GET_TDISP_VERSION {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_VERSION <- Responder
- Requester -> GET_TDISP_CAPABILITIES {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_CAPABILITIES <- Responder
- Setup IDE Key with IDE_KM protocol for default_Selective_IDE_Stream_ID.
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=default_Selective_IDE_Stream_ID, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- LOCK_INTERFACE_RESPONSE <- Responder
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- DEVICE_INTERFACE_STATE <- Responder
- If DEVICE_INTERFACE_STATE.TDI_STATE != CONFIG_LOCKED, then skip the test.
TestTeardown:
- Requester -> STOP_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- STOP_INTERFACE_RESPONSE <- Responder
Steps:
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=default_Selective_IDE_Stream_ID, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- TdispMessage <- Responder
Assertion 3.3.1: sizeof(TdispMessage) == sizeof(TDISP_ERROR)
Assertion 3.3.2: TdispMessage.MessageType == TDISP_ERROR
Assertion 3.3.3: TdispMessage.TDISPVersion == 0x10
Assertion 3.3.4: TdispMessage.INTERFACE_ID == LOCK_INTERFACE_REQUEST.INTERFACE_ID
Assertion 3.3.5: TdispMessage.ERROR_CODE == INVALID_INTERFACE_STATE
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TdispMessage <- Responder
Assertion 3.3.6: TdispMessage.TDI_STATE == CONFIG_LOCKED
Case 3.4
Description: TDISP responder shall return TDISP_ERROR(INVALID_INTERFACE_STATE), if it receives a LOCK_INTERFACE_REQUEST in RUN state.
TestSetup:
- Requester -> GET_TDISP_VERSION {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_VERSION <- Responder
- Requester -> GET_TDISP_CAPABILITIES {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TDISP_CAPABILITIES <- Responder
- Setup IDE Key with IDE_KM protocol for default_Selective_IDE_Stream_ID.
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=default_Selective_IDE_Stream_ID, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- LOCK_INTERFACE_RESPONSE <- Responder
- Requester -> START_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, START_INTERFACE_NONCE=LOCK_INTERFACE_RESPONSE.START_INTERFACE_NONCE}
- START_INTERFACE_RESPONSE <- Responder
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- DEVICE_INTERFACE_STATE <- Responder
- If DEVICE_INTERFACE_STATE.TDI_STATE != RUN, then skip the test.
TestTeardown:
- Requester -> STOP_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- STOP_INTERFACE_RESPONSE <- Responder
Steps:
- Requester -> LOCK_INTERFACE_REQUEST {TDISPVersion=0x10, INTERFACE_ID=TDI_ID, FLAGS=TDISP_CAPABILITIES.LOCK_INTERFACE_FLAGS_SUPPORTED, StreamID=default_Selective_IDE_Stream_ID, MMIO_REPORTING_OFFSET, BIND_P2P_ADDRESS_MASK=0}
- TdispMessage <- Responder
Assertion 3.4.1: sizeof(TdispMessage) == sizeof(TDISP_ERROR)
Assertion 3.4.2: TdispMessage.MessageType == TDISP_ERROR
Assertion 3.4.3: TdispMessage.TDISPVersion == 0x10
Assertion 3.4.4: TdispMessage.INTERFACE_ID == LOCK_INTERFACE_REQUEST.INTERFACE_ID
Assertion 3.4.5: TdispMessage.ERROR_CODE == INVALID_INTERFACE_STATE
- Requester -> GET_DEVICE_INTERFACE_STATE {TDISPVersion=0x10, INTERFACE_ID=TDI_ID}
- TdispMessage <- Responder
Assertion 3.4.6: TdispMessage.TDI_STATE == RUN