scsi: megaraid_sas: Create separate functions for allocating and freeing controller DMA buffers
Code refactoring - create separate functions to allocate and free controller DMA buffers 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>
This commit is contained in:
parent
49a7a4adb0
commit
1b4bed2061
|
@ -6092,6 +6092,103 @@ static inline void megasas_free_ctrl_mem(struct megasas_instance *instance)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* megasas_alloc_ctrl_dma_buffers - Allocate consistent DMA buffers during
|
||||
* driver load time
|
||||
*
|
||||
* @instance- Adapter soft instance
|
||||
* @return- O for SUCCESS
|
||||
*/
|
||||
static inline
|
||||
int megasas_alloc_ctrl_dma_buffers(struct megasas_instance *instance)
|
||||
{
|
||||
struct pci_dev *pdev = instance->pdev;
|
||||
|
||||
instance->evt_detail =
|
||||
pci_alloc_consistent(pdev,
|
||||
sizeof(struct megasas_evt_detail),
|
||||
&instance->evt_detail_h);
|
||||
|
||||
if (!instance->evt_detail) {
|
||||
dev_err(&instance->pdev->dev,
|
||||
"Failed to allocate event detail buffer\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (!reset_devices) {
|
||||
instance->system_info_buf =
|
||||
pci_alloc_consistent(pdev,
|
||||
sizeof(struct MR_DRV_SYSTEM_INFO),
|
||||
&instance->system_info_h);
|
||||
instance->pd_info =
|
||||
pci_alloc_consistent(pdev,
|
||||
sizeof(struct MR_PD_INFO),
|
||||
&instance->pd_info_h);
|
||||
instance->tgt_prop =
|
||||
pci_alloc_consistent(pdev,
|
||||
sizeof(struct MR_TARGET_PROPERTIES),
|
||||
&instance->tgt_prop_h);
|
||||
instance->crash_dump_buf =
|
||||
pci_alloc_consistent(pdev,
|
||||
CRASH_DMA_BUF_SIZE,
|
||||
&instance->crash_dump_h);
|
||||
|
||||
if (!instance->system_info_buf)
|
||||
dev_err(&instance->pdev->dev,
|
||||
"Failed to allocate system info buffer\n");
|
||||
|
||||
if (!instance->pd_info)
|
||||
dev_err(&instance->pdev->dev,
|
||||
"Failed to allocate pd_info buffer\n");
|
||||
|
||||
if (!instance->tgt_prop)
|
||||
dev_err(&instance->pdev->dev,
|
||||
"Failed to allocate tgt_prop buffer\n");
|
||||
|
||||
if (!instance->crash_dump_buf)
|
||||
dev_err(&instance->pdev->dev,
|
||||
"Failed to allocate crash dump buffer\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* megasas_free_ctrl_dma_buffers - Free consistent DMA buffers allocated
|
||||
* during driver load time
|
||||
*
|
||||
* @instance- Adapter soft instance
|
||||
*
|
||||
*/
|
||||
static inline
|
||||
void megasas_free_ctrl_dma_buffers(struct megasas_instance *instance)
|
||||
{
|
||||
struct pci_dev *pdev = instance->pdev;
|
||||
|
||||
if (instance->evt_detail)
|
||||
pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),
|
||||
instance->evt_detail,
|
||||
instance->evt_detail_h);
|
||||
|
||||
if (instance->system_info_buf)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_DRV_SYSTEM_INFO),
|
||||
instance->system_info_buf,
|
||||
instance->system_info_h);
|
||||
|
||||
if (instance->pd_info)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_PD_INFO),
|
||||
instance->pd_info, instance->pd_info_h);
|
||||
|
||||
if (instance->tgt_prop)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_TARGET_PROPERTIES),
|
||||
instance->tgt_prop, instance->tgt_prop_h);
|
||||
|
||||
if (instance->crash_dump_buf)
|
||||
pci_free_consistent(pdev, CRASH_DMA_BUF_SIZE,
|
||||
instance->crash_dump_buf,
|
||||
instance->crash_dump_h);
|
||||
}
|
||||
|
||||
/**
|
||||
* megasas_probe_one - PCI hotplug entry point
|
||||
* @pdev: PCI device structure
|
||||
|
@ -6153,6 +6250,9 @@ static int megasas_probe_one(struct pci_dev *pdev,
|
|||
if (megasas_alloc_ctrl_mem(instance))
|
||||
goto fail_alloc_dma_buf;
|
||||
|
||||
if (megasas_alloc_ctrl_dma_buffers(instance))
|
||||
goto fail_alloc_dma_buf;
|
||||
|
||||
/* Crash dump feature related initialisation*/
|
||||
instance->drv_buf_index = 0;
|
||||
instance->drv_buf_alloc = 0;
|
||||
|
@ -6169,44 +6269,6 @@ static int megasas_probe_one(struct pci_dev *pdev,
|
|||
atomic_set(&instance->adprecovery, MEGASAS_HBA_OPERATIONAL);
|
||||
instance->is_imr = 0;
|
||||
|
||||
instance->evt_detail = pci_alloc_consistent(pdev,
|
||||
sizeof(struct
|
||||
megasas_evt_detail),
|
||||
&instance->evt_detail_h);
|
||||
|
||||
if (!instance->evt_detail) {
|
||||
dev_printk(KERN_DEBUG, &pdev->dev, "Failed to allocate memory for "
|
||||
"event detail structure\n");
|
||||
goto fail_alloc_dma_buf;
|
||||
}
|
||||
|
||||
if (!reset_devices) {
|
||||
instance->system_info_buf = pci_zalloc_consistent(pdev,
|
||||
sizeof(struct MR_DRV_SYSTEM_INFO),
|
||||
&instance->system_info_h);
|
||||
if (!instance->system_info_buf)
|
||||
dev_info(&instance->pdev->dev, "Can't allocate system info buffer\n");
|
||||
|
||||
instance->pd_info = pci_alloc_consistent(pdev,
|
||||
sizeof(struct MR_PD_INFO), &instance->pd_info_h);
|
||||
|
||||
if (!instance->pd_info)
|
||||
dev_err(&instance->pdev->dev, "Failed to alloc mem for pd_info\n");
|
||||
|
||||
instance->tgt_prop = pci_alloc_consistent(pdev,
|
||||
sizeof(struct MR_TARGET_PROPERTIES), &instance->tgt_prop_h);
|
||||
|
||||
if (!instance->tgt_prop)
|
||||
dev_err(&instance->pdev->dev, "Failed to alloc mem for tgt_prop\n");
|
||||
|
||||
instance->crash_dump_buf = pci_alloc_consistent(pdev,
|
||||
CRASH_DMA_BUF_SIZE,
|
||||
&instance->crash_dump_h);
|
||||
if (!instance->crash_dump_buf)
|
||||
dev_err(&pdev->dev, "Can't allocate Firmware "
|
||||
"crash dump DMA buffer\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize locks and queues
|
||||
*/
|
||||
|
@ -6334,19 +6396,7 @@ fail_io_attach:
|
|||
pci_free_irq_vectors(instance->pdev);
|
||||
fail_init_mfi:
|
||||
fail_alloc_dma_buf:
|
||||
if (instance->evt_detail)
|
||||
pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),
|
||||
instance->evt_detail,
|
||||
instance->evt_detail_h);
|
||||
|
||||
if (instance->pd_info)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_PD_INFO),
|
||||
instance->pd_info,
|
||||
instance->pd_info_h);
|
||||
if (instance->tgt_prop)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_TARGET_PROPERTIES),
|
||||
instance->tgt_prop,
|
||||
instance->tgt_prop_h);
|
||||
megasas_free_ctrl_dma_buffers(instance);
|
||||
megasas_free_ctrl_mem(instance);
|
||||
scsi_host_put(host);
|
||||
|
||||
|
@ -6605,20 +6655,7 @@ megasas_resume(struct pci_dev *pdev)
|
|||
return 0;
|
||||
|
||||
fail_init_mfi:
|
||||
if (instance->evt_detail)
|
||||
pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),
|
||||
instance->evt_detail,
|
||||
instance->evt_detail_h);
|
||||
|
||||
if (instance->pd_info)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_PD_INFO),
|
||||
instance->pd_info,
|
||||
instance->pd_info_h);
|
||||
if (instance->tgt_prop)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_TARGET_PROPERTIES),
|
||||
instance->tgt_prop,
|
||||
instance->tgt_prop_h);
|
||||
|
||||
megasas_free_ctrl_dma_buffers(instance);
|
||||
megasas_free_ctrl_mem(instance);
|
||||
scsi_host_put(host);
|
||||
|
||||
|
@ -6766,17 +6803,6 @@ skip_firing_dcmds:
|
|||
|
||||
kfree(instance->ctrl_info);
|
||||
|
||||
if (instance->evt_detail)
|
||||
pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),
|
||||
instance->evt_detail, instance->evt_detail_h);
|
||||
if (instance->pd_info)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_PD_INFO),
|
||||
instance->pd_info,
|
||||
instance->pd_info_h);
|
||||
if (instance->tgt_prop)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_TARGET_PROPERTIES),
|
||||
instance->tgt_prop,
|
||||
instance->tgt_prop_h);
|
||||
if (instance->vf_affiliation)
|
||||
pci_free_consistent(pdev, (MAX_LOGICAL_DRIVES + 1) *
|
||||
sizeof(struct MR_LD_VF_AFFILIATION),
|
||||
|
@ -6794,13 +6820,7 @@ skip_firing_dcmds:
|
|||
instance->hb_host_mem,
|
||||
instance->hb_host_mem_h);
|
||||
|
||||
if (instance->crash_dump_buf)
|
||||
pci_free_consistent(pdev, CRASH_DMA_BUF_SIZE,
|
||||
instance->crash_dump_buf, instance->crash_dump_h);
|
||||
|
||||
if (instance->system_info_buf)
|
||||
pci_free_consistent(pdev, sizeof(struct MR_DRV_SYSTEM_INFO),
|
||||
instance->system_info_buf, instance->system_info_h);
|
||||
megasas_free_ctrl_dma_buffers(instance);
|
||||
|
||||
megasas_free_ctrl_mem(instance);
|
||||
|
||||
|
|
Loading…
Reference in a new issue