]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/ocrdma: EQ full catastrophe avoidance
authorDevesh Sharma <devesh.sharma@emulex.com>
Tue, 4 Feb 2014 06:26:54 +0000 (11:56 +0530)
committerRoland Dreier <roland@purestorage.com>
Thu, 3 Apr 2014 15:29:34 +0000 (08:29 -0700)
commita889422ce7a185296dae080f985f3b74ed3c76ba
tree5827d101e41788a4ff93c2368eaa4d3ec5ae337a
parent6a7747b13e821798b1f1a76904acfe541528b06f
RDMA/ocrdma: EQ full catastrophe avoidance

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: Devesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/ocrdma/ocrdma.h
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/ocrdma/ocrdma_hw.h
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c