summaryrefslogtreecommitdiff
path: root/drivers/scsi/megaraid
diff options
context:
space:
mode:
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>2017-10-19 02:48:59 -0700
committerMartin K. Petersen <martin.petersen@oracle.com>2017-10-25 04:55:28 -0400
commite5d65b4b81af41e3d6b8e25f7aabc5256f647d87 (patch)
treefb59f6491cbf3377e53a007823c06de866196123 /drivers/scsi/megaraid
parent7535f27d1f1408c25176af86feda846fa3d3d307 (diff)
scsi: megaraid_sas: Move controller memory allocations and DMA mask settings from probe to megasas_init_fw
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/megaraid')
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index a201b6e3fbb1..79e3e23cd9b7 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -206,6 +206,18 @@ wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd,
void megasas_fusion_ocr_wq(struct work_struct *work);
static int megasas_get_ld_vf_affiliation(struct megasas_instance *instance,
int initial);
+static int
+megasas_set_dma_mask(struct pci_dev *pdev);
+static int
+megasas_alloc_ctrl_mem(struct megasas_instance *instance);
+static inline void
+megasas_free_ctrl_mem(struct megasas_instance *instance);
+static inline int
+megasas_alloc_ctrl_dma_buffers(struct megasas_instance *instance);
+static inline void
+megasas_free_ctrl_dma_buffers(struct megasas_instance *instance);
+static inline void
+megasas_init_ctrl_params(struct megasas_instance *instance);
void
megasas_issue_dcmd(struct megasas_instance *instance, struct megasas_cmd *cmd)
@@ -5179,6 +5191,19 @@ static int megasas_init_fw(struct megasas_instance *instance)
goto fail_ready_state;
}
+ megasas_init_ctrl_params(instance);
+
+ if (megasas_set_dma_mask(instance->pdev))
+ goto fail_ready_state;
+
+ if (megasas_alloc_ctrl_mem(instance))
+ goto fail_alloc_dma_buf;
+
+ if (megasas_alloc_ctrl_dma_buffers(instance))
+ goto fail_alloc_dma_buf;
+
+ fusion = instance->ctrl_context;
+
if (instance->adapter_type == VENTURA_SERIES) {
scratch_pad_3 =
readl(&instance->reg_set->outbound_scratch_pad_3);
@@ -5475,6 +5500,9 @@ fail_setup_irqs:
if (instance->msix_vectors)
pci_free_irq_vectors(instance->pdev);
instance->msix_vectors = 0;
+fail_alloc_dma_buf:
+ megasas_free_ctrl_dma_buffers(instance);
+ megasas_free_ctrl_mem(instance);
fail_ready_state:
iounmap(instance->reg_set);
@@ -6318,9 +6346,6 @@ static int megasas_probe_one(struct pci_dev *pdev,
pci_set_master(pdev);
- if (megasas_set_dma_mask(pdev))
- goto fail_set_dma_mask;
-
host = scsi_host_alloc(&megasas_template,
sizeof(struct megasas_instance));
@@ -6343,14 +6368,6 @@ static int megasas_probe_one(struct pci_dev *pdev,
megasas_set_adapter_type(instance);
- megasas_init_ctrl_params(instance);
-
- if (megasas_alloc_ctrl_mem(instance))
- goto fail_alloc_dma_buf;
-
- if (megasas_alloc_ctrl_dma_buffers(instance))
- goto fail_alloc_dma_buf;
-
/*
* Initialize MFI Firmware
*/
@@ -6432,13 +6449,9 @@ fail_io_attach:
if (instance->msix_vectors)
pci_free_irq_vectors(instance->pdev);
fail_init_mfi:
-fail_alloc_dma_buf:
- megasas_free_ctrl_dma_buffers(instance);
- megasas_free_ctrl_mem(instance);
scsi_host_put(host);
fail_alloc_instance:
-fail_set_dma_mask:
pci_disable_device(pdev);
return -ENODEV;