As stated in [1], dma_set_mask() with a 64-bit mask never fails if
dev->dma_mask is non-NULL.
So, if it fails, the 32 bits case will also fail for the same reason.
Simplify code and remove some dead code accordingly.
[1]: https://lore.kernel.org/linux-kernel/[email protected]/#t
Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/scsi/hisi_sas/hisi_sas_main.c | 3 ---
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 --
2 files changed, 5 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index a05ec7aece5a..2f53a2ee024a 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -2666,9 +2666,6 @@ static struct Scsi_Host *hisi_sas_shost_alloc(struct platform_device *pdev,
goto err_out;
error = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
- if (error)
- error = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
-
if (error) {
dev_err(dev, "No usable DMA addressing method\n");
goto err_out;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index a45ef9a5e12e..a01a3a7b706b 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -4695,8 +4695,6 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto err_out;
rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
- if (rc)
- rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
if (rc) {
dev_err(dev, "No usable DMA addressing method\n");
rc = -ENODEV;
--
2.32.0
On 15/01/2022 09:05, Christophe JAILLET wrote:
> As stated in [1], dma_set_mask() with a 64-bit mask never fails if
> dev->dma_mask is non-NULL.
> So, if it fails, the 32 bits case will also fail for the same reason.
>
> Simplify code and remove some dead code accordingly.
>
> [1]: https://lore.kernel.org/linux-kernel/[email protected]/#t
>
> Signed-off-by: Christophe JAILLET <[email protected]>
Great, you got both callsites:
Acked-by: John Garry <[email protected]>
> ---
> drivers/scsi/hisi_sas/hisi_sas_main.c | 3 ---
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 --
> 2 files changed, 5 deletions(-)
>
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
> index a05ec7aece5a..2f53a2ee024a 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_main.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
> @@ -2666,9 +2666,6 @@ static struct Scsi_Host *hisi_sas_shost_alloc(struct platform_device *pdev,
> goto err_out;
>
> error = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
> - if (error)
> - error = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
> -
> if (error) {
> dev_err(dev, "No usable DMA addressing method\n");
> goto err_out;
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> index a45ef9a5e12e..a01a3a7b706b 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> @@ -4695,8 +4695,6 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> goto err_out;
>
> rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
> - if (rc)
> - rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
> if (rc) {
> dev_err(dev, "No usable DMA addressing method\n");
> rc = -ENODEV;
>
Christophe,
> As stated in [1], dma_set_mask() with a 64-bit mask never fails if
> dev->dma_mask is non-NULL. So, if it fails, the 32 bits case will
> also fail for the same reason.
Applied to 5.17/scsi-staging, thanks!
--
Martin K. Petersen Oracle Linux Engineering
On Sat, 15 Jan 2022 10:05:22 +0100, Christophe JAILLET wrote:
> As stated in [1], dma_set_mask() with a 64-bit mask never fails if
> dev->dma_mask is non-NULL.
> So, if it fails, the 32 bits case will also fail for the same reason.
>
> Simplify code and remove some dead code accordingly.
>
> [1]: https://lore.kernel.org/linux-kernel/[email protected]/#t
>
> [...]
Applied to 5.17/scsi-fixes, thanks!
[1/1] scsi: hisi_sas: Remove useless DMA-32 fallback configuration
https://git.kernel.org/mkp/scsi/c/8001fa240fc0
--
Martin K. Petersen Oracle Linux Engineering