Skip to content

MSIX Interrupts

trentmeester edited this page Apr 25, 2012 · 1 revision

MSI-X Interrupts under this framework follow these rules. The assumption of this page is that only MSI-X IRQs are being utilized.

Framework Behavior

  1. dnvme unmasks IRQ's for the CQ being reaped every time a CQ is reaped, if and only if that CQ is using IRQ's.
  2. The act of reap inquiry does not affect IRQ's what-so-ever. The state of the system remains.

DUT Behavior

A DUT only performs IRQ related actions when any of the following occur.
    * A CQ head doorbell register is written by the host.
    * The DUT wrote a CE to any CQ and the CQ is under the control of IRQ's.

The following table details the IRQ related actions a DUT will perform.

Outstanding             IRQ
(unreapead)           currently
CE's in a CQ?          masked              DUT action
-----------------------------------------------------------------------------------------------------------
    true                 yes               set pending bit in PBA table; no MSI-X msg is sent to host
    true                 no                if pending bit in PBA table is set, then send MSI-X msg to host
                                           else no MSI-X msg is sent to host
    false                yes               pending bit in PBA table is reset; no MSI-X msg is sent to host
    false                no                pending bit in PBA table is reset; no MSI-X msg is sent to host

Clone this wiki locally