Visible to Intel only — GUID: nik1410905532930
Ixiasoft
Visible to Intel only — GUID: nik1410905532930
Ixiasoft
4.8. Interrupt Interface
The SR-IOV Bridge supports MSI and MSI-X interrupts for both Physical and Virtual Functions. It also supports legacy Interrupts for Physical Functions. The Application Layer can use this interface to generate MSI or MSI-X interrupts from both PFs and VFs. The Application Layer can generate legacy interrupts from PFs only. The Application Layer should select one of the three types of interrupts, depending on the support provided by the platform and the software drivers. Ground the input pins for the unused interrupt types.
This interface also includes signals to set and clear the individual bits in the MSI Pending Bit Register.
Signal |
Direction |
Description |
---|---|---|
app_msi_req |
Input |
When asserted, the Application Layer is requesting that an MSI interrupt be sent. Assertion causes an MSI posted write TLP to be generated. The MSI TLP uses app_msi_req_fn[7:0], app_msi_tc and app_msi_num to create the TLP. Refer to Timing Diagram for MSI Interrupt Generation for a timing diagram. |
app_msi_req_fn[7:0] |
Input |
Specifies the function generating the MSI or MSI-X interrupt. Driven in the same cycle as app_msi_req or app_msix_req. |
app_msi_ack |
Output |
Ack for MSI interrupts. When asserted, indicates that Hard IP has sent an MSI posted write TLP in response app_msi_req . The Application Layer must wait for app_msi_ack after asserting app_msi_req. The Application Layer must de-assert app_msi_req for at least 1 cycle before signaling a new MSI interrupt. |
app_msi_addr_pf[127:0] | Output |
Driven by the MSI address registers of PF0 and PF1. app_msi_addr_pf[63:0] specifies the PF0 address. app_msi_addr_pf[127:64] specifies the PF1 address. |
app_msi_data_pf[16<n>-1:0] | Output |
Driven by the MSI Data Registers of PF0 and PF1. <n>= the number of PFs. |
app_msi_enable_pf[1:0] |
Output |
Driven by the MSI Enable bit of the MSI Control Registers of PF0 and PF1. |
app_msi_mask_pf[32<n>-1:0] | Output |
The MSI Mask Bits of the MSI Capability Structure drive app_msi_mask_pf. This mask allows software to disable or defer message sending on a per-vector basis. app_msi_mask_pf[31:0] mask vectors for PF0.app_msi_mask_pf[63:32] mask vectors for PF1. |
app_msi_multi_msg_enable_pf[5:0] |
Output |
Defines the number of interrupt vectors enabled for each PF. The following encodings are defined:
The MSI Multiple Message Enable field of the MSI Control Register of PF0 drives app_msi_multi_msg_enable_pf[2:0]. The MSI Multiple Message Enable field of the MSI Control Register of PF1 drives app_msi_multi_msg_enable_pf[5:3]. |
app_msi_num[4:0] |
Input |
Identifies the MSI interrupt type to be generated. Provides the low-order message data bits to be sent in the message data field of MSI messages. Only bits that are enabled by the MSI Message Control Register apply. |
app_msi_pending_bit_write_data |
Input |
Writes the MSI Pending Bit Register of the specified function when msi_pending_bit_write_en is asserted. app_msi_num[4:0] specifies the bit to be written. For more information about the MSI Pending Bit Array (PBA), refer to Section 6.8.1.7 Mask Bits for MSI (Optional) in the PCI Local Bus Specification, Revision 3.0. Refer to Timing Diagram for MSI Pending Bit Write Operation below. |
msi_pending_bit_write_en |
Input |
Writes a 0 or 1 into selected bit position in the MSI Pending Bit Register. app_msi_num[4:0] specifies the bit to be written. msi_pending_bit_write_data specifies the data to be written (0 or 1). app_msi_req_fn specifies the function number. msi_pending_bit_write_en cannot be asserted when app_msi_req is high. Refer to Timing Diagram for MSI Pending Bit Write Operation below. |
app_msi_pending_pf[63:0] | Output |
The MSI Data Registers of PF0 and PF1 drive msi_pending_pf[63:0] |
app_msi_tc[2:0] |
Input |
Specifies the traffic class to be used to send the MSI or MSI-X posted write TLP. Must be valid when app_msi_req or app_msix_req is asserted. |
app_msi_status[1:0] | Output | Indicates the status of an MSI request. Valid when app_msi_ack is asserted. The following encodings are defined:
|
Signal |
Direction |
Description |
---|---|---|
app_msix_req |
Input |
When asserted, the Application Layer is requesting that an MSI-X interrupt be sent. Assertion causes an MSI-X posted write TLP to be generated. The MSI-X TLP uses data from app_msi_req_fn, app_msix_addr, app_msix_data, and app_msi_tc inputs. Refer to Timing Diagram for MSI-X Interrupt Generation below. |
app_msix_ack |
Output |
Ack for MSI-X interrupts. When asserted, indicates that Hard IP has sent an MSI-X posted write TLP in response app_msix_req . The Application Layer must wait for after asserting app_msix_req. The Application Layer must de-assert app_msix_req for at least 1 cycle before signaling a new MSI interrupt. |
app_msix_addr[63:0] |
Input |
The Application Layer drives the address for the MSI-X posted write TLP on this input. Driven in the same cycle as app_msix_req. |
app_msix_data[31:0] |
Input |
The Application Layer drives app_msix_data[31:0] for the MSI-X posted write TLP. Driven in the same cycle as app_msix_req. |
app_msix_enable_pf[1:0] |
Output |
The MSI-X Enable bit of PF0 and PF1 MSI-X Control Register drive this output. |
app_msix_enable_vf[<n>-1:0] |
Output |
The MSI-X Enable bit of the MSI-X Control Register for VF0 drives bit[0]. The MSI-X Enable bit of the MSI-X Control Register for VF1 drives bit[1], and so on. |
app_msix_err | Output |
Indicates an error during the execution of an MSI-X request. Valid when app_msix_ack is asserted. The following encodings are defined:
|
app_msix_fn_mask_pf[1:0] |
Output |
The MSI-X Function Mask bit of PF0 and PF1 MSI-X Control Register drive this output. |
app_msix_fn_mask_vf[<n>-1:0] |
Output |
The MSI-X Function Mask bit of the MSI-X Control Register for VF0 drives bit[0]. The MSI-X Function Mask bit of the MSI-X Control Register for VF1 drives bit[1], and so on. <n> equals the total number of VFs for both PF0 and PF1. |
Signal |
Direction |
Description |
---|---|---|
app_int_sts_a |
Input |
The Application Layer uses this signal to generate a legacy INT<x> interrupt. <x> corresponds to a-d for functions programmed to use interrupt pins a-d. The Hard IP sends an INTx_Assert message upstream to the Root Complex in response to a low-to- high transition. The Hard IP sends a INTX_Deassert in response to a high-to-low transition. The INTX_Deassert message is only sent if a previous INTx_Assert message was sent. Legacy Interrupt Assertion and Legacy Interrupt Deassertion for timing diagrams. This input has no effect if the INT<x>Disable bit in the PCI Command Register of the interrupting function is set to 1. |
app_int_sts_b |
Input |
|
app_int_sts_c |
Input |
|
app_int_sts_d |
Input |
|
app_int_ack |
Output |
A pulse on this output indicates that an INTx_Assert or INTX_Deassert message has been sent. Assertion is in response to a transition on aapp_int_sts_<x> input. This signal is asserted for at least 1 cycle when an INTx_Assert message TLP has been transmitted. It is asserted when either of the following occurs:
|
app_int_pend_status[1:0] | Input | The Application Layer must drive each of these inputs with the interrupt pending status of the corresponding PF. The Interrupt Pending Status bit of the PCI Status Register records the pending status . |
app_int_sts_fn |
Input |
Identifies the function generating the legacy interrupt. When app_int_sts_fn = 0, specifies status for PF0. When app_int_sts_fn = 1, specifies status for PF1. |
app_intx_disable[1:0] |
Output |
This output is driven by the INT<x>Disable bit of the PCI Command Register of FP0 and PF1. app_intx_disable[0] disables PF0. app_intx_disable[1] disables PF1. |