aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ehca/hcp_if.c
diff options
context:
space:
mode:
authorStefan Roscher <ossrosch@linux.vnet.ibm.com>2008-07-14 23:48:47 -0700
committerRoland Dreier <rolandd@cisco.com>2008-07-14 23:48:47 -0700
commit6f7bc01a7382641c61ec036d68ff3a9140b48a1c (patch)
treedebf518649e7af08c42465f6683bc66322ba1554 /drivers/infiniband/hw/ehca/hcp_if.c
parentIB/ehca: Reject receive work requests if QP is in RESET state (diff)
downloadlinux-dev-6f7bc01a7382641c61ec036d68ff3a9140b48a1c.tar.xz
linux-dev-6f7bc01a7382641c61ec036d68ff3a9140b48a1c.zip
IB/ehca: In case of lost interrupts, trigger EOI to reenable interrupts
During corner case testing, we noticed that some versions of ehca do not properly transition to interrupt done in special load situations. This can be resolved by periodically triggering EOI through H_EOI, if EQEs are pending. Signed-off-by: Stefan Roscher <stefan.roscher@de.ibm.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ehca/hcp_if.c')
-rw-r--r--drivers/infiniband/hw/ehca/hcp_if.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ehca/hcp_if.c b/drivers/infiniband/hw/ehca/hcp_if.c
index 5245e13c3a30..415d3a465de6 100644
--- a/drivers/infiniband/hw/ehca/hcp_if.c
+++ b/drivers/infiniband/hw/ehca/hcp_if.c
@@ -933,3 +933,13 @@ u64 hipz_h_error_data(const struct ipz_adapter_handle adapter_handle,
r_cb,
0, 0, 0, 0);
}
+
+u64 hipz_h_eoi(int irq)
+{
+ unsigned long xirr;
+
+ iosync();
+ xirr = (0xffULL << 24) | irq;
+
+ return plpar_hcall_norets(H_EOI, xirr);
+}