{
        struct viosrp_adapter_info *req;
        struct srp_event_struct *evt_struct;
+       unsigned long flags;
        dma_addr_t addr;
 
        evt_struct = get_event_struct(&hostdata->pool);
                return;
        }
        
+       spin_lock_irqsave(hostdata->host->host_lock, flags);
        if (ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2)) {
                dev_err(hostdata->dev, "couldn't send ADAPTER_INFO_REQ!\n");
                dma_unmap_single(hostdata->dev,
                                 sizeof(hostdata->madapter_info),
                                 DMA_BIDIRECTIONAL);
        }
+       spin_unlock_irqrestore(hostdata->host->host_lock, flags);
 };
 
 /**
 {
        struct viosrp_host_config *host_config;
        struct srp_event_struct *evt_struct;
+       unsigned long flags;
        dma_addr_t addr;
        int rc;
 
        }
 
        init_completion(&evt_struct->comp);
+       spin_lock_irqsave(hostdata->host->host_lock, flags);
        rc = ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2);
+       spin_unlock_irqrestore(hostdata->host->host_lock, flags);
        if (rc == 0)
                wait_for_completion(&evt_struct->comp);
        dma_unmap_single(hostdata->dev, addr, length, DMA_BIDIRECTIONAL);