mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
scsi: hisi_sas: set dma mask before allocate DMA memory
The device DMA mask was being set after the bulk of the DMA allocations in the driver init, so potentially DMA allocates fail. To resolve, relocate before allocating the DMA memory when initialising the driver. Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com> Signed-off-by: John Garry <john.garry@huawei.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
09fe9ecb18
commit
a6f2c7fff9
@ -1439,6 +1439,12 @@ static struct Scsi_Host *hisi_sas_shost_alloc(struct platform_device *pdev,
|
||||
&hisi_hba->queue_count))
|
||||
goto err_out;
|
||||
|
||||
if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)) &&
|
||||
dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32))) {
|
||||
dev_err(dev, "No usable DMA addressing method\n");
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
hisi_hba->regs = devm_ioremap_resource(dev, res);
|
||||
if (IS_ERR(hisi_hba->regs))
|
||||
@ -1486,13 +1492,6 @@ int hisi_sas_probe(struct platform_device *pdev,
|
||||
hisi_hba = shost_priv(shost);
|
||||
platform_set_drvdata(pdev, sha);
|
||||
|
||||
if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)) &&
|
||||
dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32))) {
|
||||
dev_err(dev, "No usable DMA addressing method\n");
|
||||
rc = -EIO;
|
||||
goto err_out_ha;
|
||||
}
|
||||
|
||||
phy_nr = port_nr = hisi_hba->n_phy;
|
||||
|
||||
arr_phy = devm_kcalloc(dev, phy_nr, sizeof(void *), GFP_KERNEL);
|
||||
|
Loading…
Reference in New Issue
Block a user