1. Status 寄存器位置
2. Status 寄存器细节
2.1 特殊位
对于 PCIe 设备,status 寄存器中有几个 bit 的值是固定的。
- Bit 4:Capability List,该位必须为 1,因为 PCIe 设备中有些 Capability 是必须的。
- Bit 5:66 MHz Capable,该位必须为 0,PCIe 中用不到。
- Bit 7:Fast Back-to-Back Capable,该位必须为 0,PCIe 中用不到。
- Bit 9~10:DEVSEL Timing,该位必须为 0,PCIe 中用不到。
2.2 功能位
- Interrupt Status
- 该状态位用于表明当前有 INTx 中断待处理(pending)。
- 如果该位为 1,并且 Command 寄存器中的 Interrupt Disable 位为 0,则设备向外发送 INTx 中断。
- 复位后该位默认值为 0。
- Master Data Parity Error
- Endpoint
- 在 Command 寄存器的 Parity Error Response 位为 1 的情况下,Endpoint 收到一个 Poisoned TLP 或者发出一个 Poisoned TLP 时,将该位置 1。
- Root Port 或者 Switch Upstream Port 或者 Switch Downstream Port
- 在 Command 寄存器的 Parity Error Response 位为 1 的情况下,如果端口收到一个流向 Downstream 方向的 Poisoned Completion 或者收到一个流向 Upstream 方向的 Poisoned Request,则将该位置为 1。
- 如果 Comand 寄存器的 Parity Error Response 为 0,那么该位在任何情况下都是 0。
- 复位后默认值是 0。
- Endpoint
- Signalled Target Abort
- 设备收到 Posted 或者 Non-Posted 请求后,如果对该请求产生一个 Completer Abort 错误,则将该位置为 1。如果收到的是 Non-Posted 请求,则该设备需要向请求端回复一个带 Completion Abort Completion Status 的 completion。
- 复位后默认值是 0。
- Received Target Abort
- 设备发出请求后,如果收到带有 Completer Abort Completion Status 的 Completion,就会将该位置 1。
- 复位后默认值是 0。
- Received Master Abort
- 设备发出请求后,如果收到带有 Unsupported Request Completion Status 的 Completion,就会将该位置 1。
- 复位后默认值是 0。
- Signalled System Error
- 在 Command 寄存器的 SERR# Enable 位设置为 1 的前提下,如果设备发送过 ERR_FATAL 或者 ERR_NONFATAL 消息,那么会将该位置为 1。
- 复位后默认值是 0。
- Detected Parity Error
- 当设备收到 Poisoned TLP 时会将该位置 1。该位的设置不受 Command 寄存器的 Parity Error Response 位的影响。
- 对于 Switch,当它从 Primary 侧收到 Poisoned TLP 时,会将该位置 1。
- 复位后默认值是 0。