static void arcmsr_hbaE_doorbell_isr(struct AdapterControlBlock *pACB)
 {
-       uint32_t outbound_doorbell, in_doorbell, tmp;
+       uint32_t outbound_doorbell, in_doorbell, tmp, i;
        struct MessageUnit_E __iomem *reg = pACB->pmuE;
 
-       in_doorbell = readl(®->iobound_doorbell);
+       if (pACB->adapter_type == ACB_ADAPTER_TYPE_F) {
+               for (i = 0; i < 5; i++) {
+                       in_doorbell = readl(®->iobound_doorbell);
+                       if (in_doorbell != 0)
+                               break;
+               }
+       } else
+               in_doorbell = readl(®->iobound_doorbell);
        outbound_doorbell = in_doorbell ^ pACB->in_doorbell;
        do {
                writel(0, ®->host_int_status); /* clear interrupt */