|
@@ -531,7 +531,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
|
|
|
{
|
|
|
struct ehca_eq *eq = &shca->eq;
|
|
|
struct ehca_eqe_cache_entry *eqe_cache = eq->eqe_cache;
|
|
|
- u64 eqe_value;
|
|
|
+ u64 eqe_value, ret;
|
|
|
unsigned long flags;
|
|
|
int eqe_cnt, i;
|
|
|
int eq_empty = 0;
|
|
@@ -583,8 +583,13 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
|
|
|
ehca_dbg(&shca->ib_device,
|
|
|
"No eqe found for irq event");
|
|
|
goto unlock_irq_spinlock;
|
|
|
- } else if (!is_irq)
|
|
|
+ } else if (!is_irq) {
|
|
|
+ ret = hipz_h_eoi(eq->ist);
|
|
|
+ if (ret != H_SUCCESS)
|
|
|
+ ehca_err(&shca->ib_device,
|
|
|
+ "bad return code EOI -rc = %ld\n", ret);
|
|
|
ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt);
|
|
|
+ }
|
|
|
if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE))
|
|
|
ehca_dbg(&shca->ib_device, "too many eqes for one irq event");
|
|
|
/* enable irq for new packets */
|