Re: [PATCH 09/15] hisi_sas: set dma mask before allocate DMA memory

2016-09-14 Thread Hannes Reinecke
On 09/06/2016 05:36 PM, John Garry wrote:
> 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 
> Signed-off-by: John Garry 
> ---
>  drivers/scsi/hisi_sas/hisi_sas_main.c | 13 ++---
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes Reinecke   zSeries & Storage
h...@suse.de  +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 09/15] hisi_sas: set dma mask before allocate DMA memory

2016-09-06 Thread John Garry
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 
Signed-off-by: John Garry 
---
 drivers/scsi/hisi_sas/hisi_sas_main.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c 
b/drivers/scsi/hisi_sas/hisi_sas_main.c
index d58e223..2f872f7 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -1439,6 +1439,12 @@ static struct Scsi_Host *hisi_sas_shost_alloc(struct 
platform_device *pdev,
 _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);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html