Move hpsa_hba_inquiry to after scsi_add_host() so that the host
is fully initialized.

Signed-off-by: Hannes Reinecke <h...@suse.com>
---
 drivers/scsi/hpsa.c | 37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index c560a4532733..c7d3463da4be 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -5796,6 +5796,22 @@ static int hpsa_scsi_host_alloc(struct ctlr_info *h)
        return 0;
 }
 
+static void hpsa_hba_inquiry(struct ctlr_info *h)
+{
+       int rc;
+
+#define HBA_INQUIRY_BYTE_COUNT 64
+       h->hba_inquiry_data = kmalloc(HBA_INQUIRY_BYTE_COUNT, GFP_KERNEL);
+       if (!h->hba_inquiry_data)
+               return;
+       rc = hpsa_scsi_do_inquiry(h, RAID_CTLR_LUNID, 0,
+               h->hba_inquiry_data, HBA_INQUIRY_BYTE_COUNT);
+       if (rc != 0) {
+               kfree(h->hba_inquiry_data);
+               h->hba_inquiry_data = NULL;
+       }
+}
+
 static int hpsa_scsi_add_host(struct ctlr_info *h)
 {
        int rv;
@@ -5805,6 +5821,9 @@ static int hpsa_scsi_add_host(struct ctlr_info *h)
                dev_err(&h->pdev->dev, "scsi_add_host failed\n");
                return rv;
        }
+
+       hpsa_hba_inquiry(h);
+
        scsi_scan_host(h->scsi_host);
        return 0;
 }
@@ -7883,22 +7902,6 @@ static int hpsa_pci_init(struct ctlr_info *h)
        return err;
 }
 
-static void hpsa_hba_inquiry(struct ctlr_info *h)
-{
-       int rc;
-
-#define HBA_INQUIRY_BYTE_COUNT 64
-       h->hba_inquiry_data = kmalloc(HBA_INQUIRY_BYTE_COUNT, GFP_KERNEL);
-       if (!h->hba_inquiry_data)
-               return;
-       rc = hpsa_scsi_do_inquiry(h, RAID_CTLR_LUNID, 0,
-               h->hba_inquiry_data, HBA_INQUIRY_BYTE_COUNT);
-       if (rc != 0) {
-               kfree(h->hba_inquiry_data);
-               h->hba_inquiry_data = NULL;
-       }
-}
-
 static int hpsa_init_reset_devices(struct pci_dev *pdev, u32 board_id)
 {
        int rc, i;
@@ -8794,8 +8797,6 @@ static int hpsa_init_one(struct pci_dev *pdev, const 
struct pci_device_id *ent)
        /* Turn the interrupts on so we can service requests */
        h->access.set_intr_mask(h, HPSA_INTR_ON);
 
-       hpsa_hba_inquiry(h);
-
        h->lastlogicals = kzalloc(sizeof(*(h->lastlogicals)), GFP_KERNEL);
        if (!h->lastlogicals)
                dev_info(&h->pdev->dev,
-- 
2.16.4

Reply via email to