Skip to content

Commit 371a6c3

Browse files
Christoph Hellwigmartinkpetersen
authored andcommitted
scsi: pmcraid: use generic DMA API
Switch from the legacy PCI DMA API to the generic DMA API. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent a9b9e3a commit 371a6c3

File tree

1 file changed

+36
-43
lines changed

1 file changed

+36
-43
lines changed

drivers/scsi/pmcraid.c

Lines changed: 36 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3514,7 +3514,7 @@ static int pmcraid_build_passthrough_ioadls(
35143514
return -ENOMEM;
35153515
}
35163516

3517-
sglist->num_dma_sg = pci_map_sg(cmd->drv_inst->pdev,
3517+
sglist->num_dma_sg = dma_map_sg(&cmd->drv_inst->pdev->dev,
35183518
sglist->scatterlist,
35193519
sglist->num_sg, direction);
35203520

@@ -3563,7 +3563,7 @@ static void pmcraid_release_passthrough_ioadls(
35633563
struct pmcraid_sglist *sglist = cmd->sglist;
35643564

35653565
if (buflen > 0) {
3566-
pci_unmap_sg(cmd->drv_inst->pdev,
3566+
dma_unmap_sg(&cmd->drv_inst->pdev->dev,
35673567
sglist->scatterlist,
35683568
sglist->num_sg,
35693569
direction);
@@ -4699,9 +4699,9 @@ static void
46994699
pmcraid_release_host_rrqs(struct pmcraid_instance *pinstance, int maxindex)
47004700
{
47014701
int i;
4702-
for (i = 0; i < maxindex; i++) {
47034702

4704-
pci_free_consistent(pinstance->pdev,
4703+
for (i = 0; i < maxindex; i++) {
4704+
dma_free_coherent(&pinstance->pdev->dev,
47054705
HRRQ_ENTRY_SIZE * PMCRAID_MAX_CMD,
47064706
pinstance->hrrq_start[i],
47074707
pinstance->hrrq_start_bus_addr[i]);
@@ -4728,11 +4728,9 @@ static int pmcraid_allocate_host_rrqs(struct pmcraid_instance *pinstance)
47284728

47294729
for (i = 0; i < pinstance->num_hrrq; i++) {
47304730
pinstance->hrrq_start[i] =
4731-
pci_alloc_consistent(
4732-
pinstance->pdev,
4733-
buffer_size,
4734-
&(pinstance->hrrq_start_bus_addr[i]));
4735-
4731+
dma_alloc_coherent(&pinstance->pdev->dev, buffer_size,
4732+
&pinstance->hrrq_start_bus_addr[i],
4733+
GFP_KERNEL);
47364734
if (!pinstance->hrrq_start[i]) {
47374735
pmcraid_err("pci_alloc failed for hrrq vector : %d\n",
47384736
i);
@@ -4761,7 +4759,7 @@ static int pmcraid_allocate_host_rrqs(struct pmcraid_instance *pinstance)
47614759
static void pmcraid_release_hcams(struct pmcraid_instance *pinstance)
47624760
{
47634761
if (pinstance->ccn.msg != NULL) {
4764-
pci_free_consistent(pinstance->pdev,
4762+
dma_free_coherent(&pinstance->pdev->dev,
47654763
PMCRAID_AEN_HDR_SIZE +
47664764
sizeof(struct pmcraid_hcam_ccn_ext),
47674765
pinstance->ccn.msg,
@@ -4773,7 +4771,7 @@ static void pmcraid_release_hcams(struct pmcraid_instance *pinstance)
47734771
}
47744772

47754773
if (pinstance->ldn.msg != NULL) {
4776-
pci_free_consistent(pinstance->pdev,
4774+
dma_free_coherent(&pinstance->pdev->dev,
47774775
PMCRAID_AEN_HDR_SIZE +
47784776
sizeof(struct pmcraid_hcam_ldn),
47794777
pinstance->ldn.msg,
@@ -4794,17 +4792,15 @@ static void pmcraid_release_hcams(struct pmcraid_instance *pinstance)
47944792
*/
47954793
static int pmcraid_allocate_hcams(struct pmcraid_instance *pinstance)
47964794
{
4797-
pinstance->ccn.msg = pci_alloc_consistent(
4798-
pinstance->pdev,
4795+
pinstance->ccn.msg = dma_alloc_coherent(&pinstance->pdev->dev,
47994796
PMCRAID_AEN_HDR_SIZE +
48004797
sizeof(struct pmcraid_hcam_ccn_ext),
4801-
&(pinstance->ccn.baddr));
4798+
&pinstance->ccn.baddr, GFP_KERNEL);
48024799

4803-
pinstance->ldn.msg = pci_alloc_consistent(
4804-
pinstance->pdev,
4800+
pinstance->ldn.msg = dma_alloc_coherent(&pinstance->pdev->dev,
48054801
PMCRAID_AEN_HDR_SIZE +
48064802
sizeof(struct pmcraid_hcam_ldn),
4807-
&(pinstance->ldn.baddr));
4803+
&pinstance->ldn.baddr, GFP_KERNEL);
48084804

48094805
if (pinstance->ldn.msg == NULL || pinstance->ccn.msg == NULL) {
48104806
pmcraid_release_hcams(pinstance);
@@ -4832,7 +4828,7 @@ static void pmcraid_release_config_buffers(struct pmcraid_instance *pinstance)
48324828
{
48334829
if (pinstance->cfg_table != NULL &&
48344830
pinstance->cfg_table_bus_addr != 0) {
4835-
pci_free_consistent(pinstance->pdev,
4831+
dma_free_coherent(&pinstance->pdev->dev,
48364832
sizeof(struct pmcraid_config_table),
48374833
pinstance->cfg_table,
48384834
pinstance->cfg_table_bus_addr);
@@ -4877,10 +4873,10 @@ static int pmcraid_allocate_config_buffers(struct pmcraid_instance *pinstance)
48774873
list_add_tail(&pinstance->res_entries[i].queue,
48784874
&pinstance->free_res_q);
48794875

4880-
pinstance->cfg_table =
4881-
pci_alloc_consistent(pinstance->pdev,
4876+
pinstance->cfg_table = dma_alloc_coherent(&pinstance->pdev->dev,
48824877
sizeof(struct pmcraid_config_table),
4883-
&pinstance->cfg_table_bus_addr);
4878+
&pinstance->cfg_table_bus_addr,
4879+
GFP_KERNEL);
48844880

48854881
if (NULL == pinstance->cfg_table) {
48864882
pmcraid_err("couldn't alloc DMA memory for config table\n");
@@ -4945,7 +4941,7 @@ static void pmcraid_release_buffers(struct pmcraid_instance *pinstance)
49454941
pmcraid_release_host_rrqs(pinstance, pinstance->num_hrrq);
49464942

49474943
if (pinstance->inq_data != NULL) {
4948-
pci_free_consistent(pinstance->pdev,
4944+
dma_free_coherent(&pinstance->pdev->dev,
49494945
sizeof(struct pmcraid_inquiry_data),
49504946
pinstance->inq_data,
49514947
pinstance->inq_data_baddr);
@@ -4955,7 +4951,7 @@ static void pmcraid_release_buffers(struct pmcraid_instance *pinstance)
49554951
}
49564952

49574953
if (pinstance->timestamp_data != NULL) {
4958-
pci_free_consistent(pinstance->pdev,
4954+
dma_free_coherent(&pinstance->pdev->dev,
49594955
sizeof(struct pmcraid_timestamp_data),
49604956
pinstance->timestamp_data,
49614957
pinstance->timestamp_data_baddr);
@@ -4972,8 +4968,8 @@ static void pmcraid_release_buffers(struct pmcraid_instance *pinstance)
49724968
* This routine pre-allocates memory based on the type of block as below:
49734969
* cmdblocks(PMCRAID_MAX_CMD): kernel memory using kernel's slab_allocator,
49744970
* IOARCBs(PMCRAID_MAX_CMD) : DMAable memory, using pci pool allocator
4975-
* config-table entries : DMAable memory using pci_alloc_consistent
4976-
* HostRRQs : DMAable memory, using pci_alloc_consistent
4971+
* config-table entries : DMAable memory using dma_alloc_coherent
4972+
* HostRRQs : DMAable memory, using dma_alloc_coherent
49774973
*
49784974
* Return Value
49794975
* 0 in case all of the blocks are allocated, -ENOMEM otherwise.
@@ -5010,23 +5006,20 @@ static int pmcraid_init_buffers(struct pmcraid_instance *pinstance)
50105006
}
50115007

50125008
/* allocate DMAable memory for page D0 INQUIRY buffer */
5013-
pinstance->inq_data = pci_alloc_consistent(
5014-
pinstance->pdev,
5009+
pinstance->inq_data = dma_alloc_coherent(&pinstance->pdev->dev,
50155010
sizeof(struct pmcraid_inquiry_data),
5016-
&pinstance->inq_data_baddr);
5017-
5011+
&pinstance->inq_data_baddr, GFP_KERNEL);
50185012
if (pinstance->inq_data == NULL) {
50195013
pmcraid_err("couldn't allocate DMA memory for INQUIRY\n");
50205014
pmcraid_release_buffers(pinstance);
50215015
return -ENOMEM;
50225016
}
50235017

50245018
/* allocate DMAable memory for set timestamp data buffer */
5025-
pinstance->timestamp_data = pci_alloc_consistent(
5026-
pinstance->pdev,
5019+
pinstance->timestamp_data = dma_alloc_coherent(&pinstance->pdev->dev,
50275020
sizeof(struct pmcraid_timestamp_data),
5028-
&pinstance->timestamp_data_baddr);
5029-
5021+
&pinstance->timestamp_data_baddr,
5022+
GFP_KERNEL);
50305023
if (pinstance->timestamp_data == NULL) {
50315024
pmcraid_err("couldn't allocate DMA memory for \
50325025
set time_stamp \n");
@@ -5315,12 +5308,12 @@ static int pmcraid_resume(struct pci_dev *pdev)
53155308

53165309
pci_set_master(pdev);
53175310

5318-
if ((sizeof(dma_addr_t) == 4) ||
5319-
pci_set_dma_mask(pdev, DMA_BIT_MASK(64)))
5320-
rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
5311+
if (sizeof(dma_addr_t) == 4 ||
5312+
dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)))
5313+
rc = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
53215314

53225315
if (rc == 0)
5323-
rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
5316+
rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
53245317

53255318
if (rc != 0) {
53265319
dev_err(&pdev->dev, "resume: Failed to set PCI DMA mask\n");
@@ -5724,19 +5717,19 @@ static int pmcraid_probe(struct pci_dev *pdev,
57245717
/* Firmware requires the system bus address of IOARCB to be within
57255718
* 32-bit addressable range though it has 64-bit IOARRIN register.
57265719
* However, firmware supports 64-bit streaming DMA buffers, whereas
5727-
* coherent buffers are to be 32-bit. Since pci_alloc_consistent always
5720+
* coherent buffers are to be 32-bit. Since dma_alloc_coherent always
57285721
* returns memory within 4GB (if not, change this logic), coherent
57295722
* buffers are within firmware acceptable address ranges.
57305723
*/
5731-
if ((sizeof(dma_addr_t) == 4) ||
5732-
pci_set_dma_mask(pdev, DMA_BIT_MASK(64)))
5733-
rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
5724+
if (sizeof(dma_addr_t) == 4 ||
5725+
dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)))
5726+
rc = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
57345727

57355728
/* firmware expects 32-bit DMA addresses for IOARRIN register; set 32
5736-
* bit mask for pci_alloc_consistent to return addresses within 4GB
5729+
* bit mask for dma_alloc_coherent to return addresses within 4GB
57375730
*/
57385731
if (rc == 0)
5739-
rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
5732+
rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
57405733

57415734
if (rc != 0) {
57425735
dev_err(&pdev->dev, "Failed to set PCI DMA mask\n");

0 commit comments

Comments
 (0)