diff options
Diffstat (limited to 'drivers/infiniband/hw/ehca/ehca_irq.c')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_irq.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c index ce1ab0571be3..0792d930c481 100644 --- a/drivers/infiniband/hw/ehca/ehca_irq.c +++ b/drivers/infiniband/hw/ehca/ehca_irq.c | |||
@@ -531,7 +531,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq) | |||
531 | { | 531 | { |
532 | struct ehca_eq *eq = &shca->eq; | 532 | struct ehca_eq *eq = &shca->eq; |
533 | struct ehca_eqe_cache_entry *eqe_cache = eq->eqe_cache; | 533 | struct ehca_eqe_cache_entry *eqe_cache = eq->eqe_cache; |
534 | u64 eqe_value; | 534 | u64 eqe_value, ret; |
535 | unsigned long flags; | 535 | unsigned long flags; |
536 | int eqe_cnt, i; | 536 | int eqe_cnt, i; |
537 | int eq_empty = 0; | 537 | int eq_empty = 0; |
@@ -583,8 +583,13 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq) | |||
583 | ehca_dbg(&shca->ib_device, | 583 | ehca_dbg(&shca->ib_device, |
584 | "No eqe found for irq event"); | 584 | "No eqe found for irq event"); |
585 | goto unlock_irq_spinlock; | 585 | goto unlock_irq_spinlock; |
586 | } else if (!is_irq) | 586 | } else if (!is_irq) { |
587 | ret = hipz_h_eoi(eq->ist); | ||
588 | if (ret != H_SUCCESS) | ||
589 | ehca_err(&shca->ib_device, | ||
590 | "bad return code EOI -rc = %ld\n", ret); | ||
587 | ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt); | 591 | ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt); |
592 | } | ||
588 | if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE)) | 593 | if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE)) |
589 | ehca_dbg(&shca->ib_device, "too many eqes for one irq event"); | 594 | ehca_dbg(&shca->ib_device, "too many eqes for one irq event"); |
590 | /* enable irq for new packets */ | 595 | /* enable irq for new packets */ |