__func__));
 
        _base_mask_interrupts(ioc);
+       ioc->shost_recovery = 1;
        _base_make_ioc_ready(ioc, CAN_SLEEP, SOFT_RESET);
+       ioc->shost_recovery = 0;
        if (ioc->pci_irq) {
                synchronize_irq(pdev->irq);
                free_irq(ioc->pci_irq, ioc);
 
                return;
        }
 
-       if (ioc->shost_recovery) {
+       if (ioc->shost_recovery || ioc->remove_host) {
                printk(MPT2SAS_INFO_FMT "%s: host reset in progress!\n",
                    __func__, ioc->name);
                return;
                _scsih_sas_topology_change_event_debug(ioc, event_data);
 #endif
 
-       if (ioc->shost_recovery)
+       if (ioc->shost_recovery || ioc->remove_host)
                return;
 
        if (!ioc->sas_hba.num_phys)
                            "expander event\n", ioc->name));
                        return;
                }
-               if (ioc->shost_recovery)
+               if (ioc->shost_recovery || ioc->remove_host)
                        return;
                phy_number = event_data->StartPhyNum + i;
                reason_code = event_data->PHY[i].PhyStatus &