Commit 9ad18a9c authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen

scsi: megaraid_sas: remove instance->ctrl_info

Re-use the pre-allocated ctrl_info DMA buffer.
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: default avatarShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 9b3d028f
...@@ -2231,7 +2231,6 @@ struct megasas_instance { ...@@ -2231,7 +2231,6 @@ struct megasas_instance {
/* Ptr to hba specific information */ /* Ptr to hba specific information */
void *ctrl_context; void *ctrl_context;
struct megasas_ctrl_info *ctrl_info;
unsigned int msix_vectors; unsigned int msix_vectors;
struct megasas_irq_context irq_context[MEGASAS_MAX_MSIX_QUEUES]; struct megasas_irq_context irq_context[MEGASAS_MAX_MSIX_QUEUES];
u64 map_id; u64 map_id;
......
...@@ -4545,9 +4545,9 @@ static void megasas_update_ext_vd_details(struct megasas_instance *instance) ...@@ -4545,9 +4545,9 @@ static void megasas_update_ext_vd_details(struct megasas_instance *instance)
return; return;
instance->supportmax256vd = instance->supportmax256vd =
instance->ctrl_info->adapterOperations3.supportMaxExtLDs; instance->ctrl_info_buf->adapterOperations3.supportMaxExtLDs;
/* Below is additional check to address future FW enhancement */ /* Below is additional check to address future FW enhancement */
if (instance->ctrl_info->max_lds > 64) if (instance->ctrl_info_buf->max_lds > 64)
instance->supportmax256vd = 1; instance->supportmax256vd = 1;
instance->drv_supported_vd_count = MEGASAS_MAX_LD_CHANNELS instance->drv_supported_vd_count = MEGASAS_MAX_LD_CHANNELS
...@@ -4605,11 +4605,8 @@ megasas_get_ctrl_info(struct megasas_instance *instance) ...@@ -4605,11 +4605,8 @@ megasas_get_ctrl_info(struct megasas_instance *instance)
struct megasas_cmd *cmd; struct megasas_cmd *cmd;
struct megasas_dcmd_frame *dcmd; struct megasas_dcmd_frame *dcmd;
struct megasas_ctrl_info *ci; struct megasas_ctrl_info *ci;
struct megasas_ctrl_info *ctrl_info;
dma_addr_t ci_h = 0; dma_addr_t ci_h = 0;
ctrl_info = instance->ctrl_info;
ci = instance->ctrl_info_buf; ci = instance->ctrl_info_buf;
ci_h = instance->ctrl_info_buf_h; ci_h = instance->ctrl_info_buf_h;
...@@ -4645,14 +4642,13 @@ megasas_get_ctrl_info(struct megasas_instance *instance) ...@@ -4645,14 +4642,13 @@ megasas_get_ctrl_info(struct megasas_instance *instance)
switch (ret) { switch (ret) {
case DCMD_SUCCESS: case DCMD_SUCCESS:
memcpy(ctrl_info, ci, sizeof(struct megasas_ctrl_info));
/* Save required controller information in /* Save required controller information in
* CPU endianness format. * CPU endianness format.
*/ */
le32_to_cpus((u32 *)&ctrl_info->properties.OnOffProperties); le32_to_cpus((u32 *)&ci->properties.OnOffProperties);
le32_to_cpus((u32 *)&ctrl_info->adapterOperations2); le32_to_cpus((u32 *)&ci->adapterOperations2);
le32_to_cpus((u32 *)&ctrl_info->adapterOperations3); le32_to_cpus((u32 *)&ci->adapterOperations3);
le16_to_cpus((u16 *)&ctrl_info->adapter_operations4); le16_to_cpus((u16 *)&ci->adapter_operations4);
/* Update the latest Ext VD info. /* Update the latest Ext VD info.
* From Init path, store current firmware details. * From Init path, store current firmware details.
...@@ -4661,21 +4657,21 @@ megasas_get_ctrl_info(struct megasas_instance *instance) ...@@ -4661,21 +4657,21 @@ megasas_get_ctrl_info(struct megasas_instance *instance)
*/ */
megasas_update_ext_vd_details(instance); megasas_update_ext_vd_details(instance);
instance->use_seqnum_jbod_fp = instance->use_seqnum_jbod_fp =
ctrl_info->adapterOperations3.useSeqNumJbodFP; ci->adapterOperations3.useSeqNumJbodFP;
instance->support_morethan256jbod = instance->support_morethan256jbod =
ctrl_info->adapter_operations4.support_pd_map_target_id; ci->adapter_operations4.support_pd_map_target_id;
/*Check whether controller is iMR or MR */ /*Check whether controller is iMR or MR */
instance->is_imr = (ctrl_info->memory_size ? 0 : 1); instance->is_imr = (ci->memory_size ? 0 : 1);
dev_info(&instance->pdev->dev, dev_info(&instance->pdev->dev,
"controller type\t: %s(%dMB)\n", "controller type\t: %s(%dMB)\n",
instance->is_imr ? "iMR" : "MR", instance->is_imr ? "iMR" : "MR",
le16_to_cpu(ctrl_info->memory_size)); le16_to_cpu(ci->memory_size));
instance->disableOnlineCtrlReset = instance->disableOnlineCtrlReset =
ctrl_info->properties.OnOffProperties.disableOnlineCtrlReset; ci->properties.OnOffProperties.disableOnlineCtrlReset;
instance->secure_jbod_support = instance->secure_jbod_support =
ctrl_info->adapterOperations3.supportSecurityonJBOD; ci->adapterOperations3.supportSecurityonJBOD;
dev_info(&instance->pdev->dev, "Online Controller Reset(OCR)\t: %s\n", dev_info(&instance->pdev->dev, "Online Controller Reset(OCR)\t: %s\n",
instance->disableOnlineCtrlReset ? "Disabled" : "Enabled"); instance->disableOnlineCtrlReset ? "Disabled" : "Enabled");
dev_info(&instance->pdev->dev, "Secure JBOD support\t: %s\n", dev_info(&instance->pdev->dev, "Secure JBOD support\t: %s\n",
...@@ -5063,7 +5059,7 @@ megasas_setup_jbod_map(struct megasas_instance *instance) ...@@ -5063,7 +5059,7 @@ megasas_setup_jbod_map(struct megasas_instance *instance)
(sizeof(struct MR_PD_CFG_SEQ) * (MAX_PHYSICAL_DEVICES - 1)); (sizeof(struct MR_PD_CFG_SEQ) * (MAX_PHYSICAL_DEVICES - 1));
if (reset_devices || !fusion || if (reset_devices || !fusion ||
!instance->ctrl_info->adapterOperations3.useSeqNumJbodFP) { !instance->ctrl_info_buf->adapterOperations3.useSeqNumJbodFP) {
dev_info(&instance->pdev->dev, dev_info(&instance->pdev->dev,
"Jbod map is not supported %s %d\n", "Jbod map is not supported %s %d\n",
__func__, __LINE__); __func__, __LINE__);
...@@ -5277,11 +5273,6 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5277,11 +5273,6 @@ static int megasas_init_fw(struct megasas_instance *instance)
tasklet_init(&instance->isr_tasklet, instance->instancet->tasklet, tasklet_init(&instance->isr_tasklet, instance->instancet->tasklet,
(unsigned long)instance); (unsigned long)instance);
instance->ctrl_info = kzalloc(sizeof(struct megasas_ctrl_info),
GFP_KERNEL);
if (instance->ctrl_info == NULL)
goto fail_init_adapter;
/* /*
* Below are default value for legacy Firmware. * Below are default value for legacy Firmware.
* non-fusion based controllers * non-fusion based controllers
...@@ -5370,7 +5361,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5370,7 +5361,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
* to calculate max_sectors_1. So the number ended up as zero always. * to calculate max_sectors_1. So the number ended up as zero always.
*/ */
tmp_sectors = 0; tmp_sectors = 0;
ctrl_info = instance->ctrl_info; ctrl_info = instance->ctrl_info_buf;
max_sectors_1 = (1 << ctrl_info->stripe_sz_ops.min) * max_sectors_1 = (1 << ctrl_info->stripe_sz_ops.min) *
le16_to_cpu(ctrl_info->max_strips_per_io); le16_to_cpu(ctrl_info->max_strips_per_io);
...@@ -5485,8 +5476,6 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5485,8 +5476,6 @@ static int megasas_init_fw(struct megasas_instance *instance)
pci_free_irq_vectors(instance->pdev); pci_free_irq_vectors(instance->pdev);
instance->msix_vectors = 0; instance->msix_vectors = 0;
fail_ready_state: fail_ready_state:
kfree(instance->ctrl_info);
instance->ctrl_info = NULL;
iounmap(instance->reg_set); iounmap(instance->reg_set);
fail_ioremap: fail_ioremap:
...@@ -6341,8 +6330,6 @@ static int megasas_probe_one(struct pci_dev *pdev, ...@@ -6341,8 +6330,6 @@ static int megasas_probe_one(struct pci_dev *pdev,
instance->host = host; instance->host = host;
instance->unique_id = pdev->bus->number << 8 | pdev->devfn; instance->unique_id = pdev->bus->number << 8 | pdev->devfn;
instance->init_id = MEGASAS_DEFAULT_INIT_ID; instance->init_id = MEGASAS_DEFAULT_INIT_ID;
instance->ctrl_info = NULL;
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY)) (instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY))
...@@ -6848,8 +6835,6 @@ static void megasas_detach_one(struct pci_dev *pdev) ...@@ -6848,8 +6835,6 @@ static void megasas_detach_one(struct pci_dev *pdev)
megasas_release_mfi(instance); megasas_release_mfi(instance);
} }
kfree(instance->ctrl_info);
if (instance->vf_affiliation) if (instance->vf_affiliation)
pci_free_consistent(pdev, (MAX_LOGICAL_DRIVES + 1) * pci_free_consistent(pdev, (MAX_LOGICAL_DRIVES + 1) *
sizeof(struct MR_LD_VF_AFFILIATION), sizeof(struct MR_LD_VF_AFFILIATION),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment