Greg Shue wrote:
GS>Now, error recovery for when a target detects an ACK Timeout on a
GS>Status FIFO write requires some special considerations. When
GS>this condition happens the initiator and target may be
GS>out-of-sync with each other, and the SBP-2 protocol does not
GS>provide a mechanism for the initiator to determine that the
GS>condition exists. The problem breaks down to two issues:
SBP-2 protocol *does* provide a mechanism to show this status.
An AGENT_STATE register has two bit to describe status.
In this case "SBP-2 Specification Rev.4" is saying, the fetch agent
shall transition to state DEAD. See page 62 "Transition Any:F5".
The only way to recover from this state, the initiator need to
write data on AGENT_RESET register.
Your scenario cause an impression that the target device shall
be responsible for recovery. However, SBP-2 specification requires
the initiator to be responsible in this case.
SBP-2>State F5: Dead. The dead state is a unique state that preserves fetch agent information in the
SBP-2>AGENT_STATE and ORB_POINTER registers. Writes to any fetch agent register except AGENT_RESET
SBP-2>shall have no effect while in state F5.
After AGENT_RESET the initiator need to inquire what is the
last ORB consumed by the target. In my idea, the initiator
shall invoke TRANSPORT_I2T_ABORT command to receive reply
from the target.
--- Fumio Nagasaka EPSON Software Deveopment Lab., Inc. voice: +81 268 25-4111