• D
    RDMA/ocrdma: EQ full catastrophe avoidance · ea617626
    Devesh Sharma 提交于
    Stale entries in the CQ being destroyed causes hardware to generate
    EQEs indefinitely for a given CQ.  Thus causing uncontrolled execution
    of irq_handler.  This patch fixes this using following sementics:
    
        * irq_handler will ring EQ doorbell atleast once and implement budgeting scheme.
        * cq_destroy will count number of valid entires during destroy and ring
          cq-db so that hardware does not generate uncontrolled EQE.
        * cq_destroy will synchronize with last running irq_handler instance.
        * arm_cq will always defer arming CQ till poll_cq, except for the first arm_cq call.
        * poll_cq will always ring cq-db with arm=SET if arm_cq was called prior to enter poll_cq.
        * poll_cq will always ring cq-db with arm=UNSET if arm_cq was not called prior to enter poll_cq.
    Signed-off-by: NDevesh Sharma <devesh.sharma@emulex.com>
    Signed-off-by: NSelvin Xavier <selvin.xavier@emulex.com>
    Signed-off-by: NRoland Dreier <roland@purestorage.com>
    ea617626
ocrdma_hw.c 70.9 KB