From: Sinan Kaya <okaya@codeaurora.org> To: linux-scsi@vger.kernel.org, timur@codeaurora.org, cov@codeaurora.org, jcm@redhat.com Cc: agross@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sinan Kaya <okaya@codeaurora.org>, Nagalakshmi Nandigama <nagalakshmi.nandigama@avagotech.com>, Praveen Krishnamoorthy <praveen.krishnamoorthy@avagotech.com>, Sreekanth Reddy <sreekanth.reddy@avagotech.com>, Abhijit Mahajan <abhijit.mahajan@avagotech.com>, "James E.J. Bottomley" <JBottomley@odin.com>, MPT-FusionLinux.pdl@avagotech.com, linux-kernel@vger.kernel.org Subject: [PATCH V2 1/3] scsi: mptxsas: try 64 bit DMA when 32 bit DMA fails Date: Sun, 8 Nov 2015 20:57:44 -0500 [thread overview] Message-ID: <1447034266-28003-2-git-send-email-okaya@codeaurora.org> (raw) In-Reply-To: <1447034266-28003-1-git-send-email-okaya@codeaurora.org> Current code gives up when 32 bit DMA is not supported. This problem has been observed on systems without any memory below 4 gig. This patch tests 64 bit support before bailing out to find a working combination. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> --- drivers/scsi/mpt2sas/mpt2sas_base.c | 21 ++++++++++++++++++++- drivers/scsi/mpt3sas/mpt3sas_base.c | 22 +++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index c167911..c61c82a 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c @@ -1217,8 +1217,27 @@ _base_config_dma_addressing(struct MPT2SAS_ADAPTER *ioc, struct pci_dev *pdev) ioc->base_add_sg_single = &_base_add_sg_single_32; ioc->sge_size = sizeof(Mpi2SGESimple32_t); ioc->dma_mask = 32; - } else + } else { + /* Try 64 bit, 32 bit failed */ + consistent_dma_mask = DMA_BIT_MASK(64); + + if (sizeof(dma_addr_t) > 4) { + const uint64_t required_mask = + dma_get_required_mask(&pdev->dev); + if ((required_mask > DMA_BIT_MASK(32)) && + !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && + !pci_set_consistent_dma_mask(pdev, + consistent_dma_mask)) { + ioc->base_add_sg_single = + &_base_add_sg_single_64; + ioc->sge_size = sizeof(Mpi2SGESimple64_t); + ioc->dma_mask = 64; + goto out; + } + } + return -ENODEV; + } out: si_meminfo(&s); diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index d4f1dcd..6dc391c 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -1535,9 +1535,29 @@ _base_config_dma_addressing(struct MPT3SAS_ADAPTER *ioc, struct pci_dev *pdev) ioc->base_add_sg_single = &_base_add_sg_single_32; ioc->sge_size = sizeof(Mpi2SGESimple32_t); ioc->dma_mask = 32; - } else + } else { + /* Try 64 bit, 32 bit failed */ + consistent_dma_mask = DMA_BIT_MASK(64); + if (sizeof(dma_addr_t) > 4) { + const uint64_t required_mask = + dma_get_required_mask(&pdev->dev); + int consistent_mask = + pci_set_consistent_dma_mask(pdev, + consistent_dma_mask); + + if ((required_mask > DMA_BIT_MASK(32)) && + !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && + !consistent_mask) { + ioc->base_add_sg_single = + &_base_add_sg_single_64; + ioc->sge_size = sizeof(Mpi2SGESimple64_t); + ioc->dma_mask = 64; + goto out; + } + } return -ENODEV; + } out: si_meminfo(&s); pr_info(MPT3SAS_FMT -- Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: okaya@codeaurora.org (Sinan Kaya) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH V2 1/3] scsi: mptxsas: try 64 bit DMA when 32 bit DMA fails Date: Sun, 8 Nov 2015 20:57:44 -0500 [thread overview] Message-ID: <1447034266-28003-2-git-send-email-okaya@codeaurora.org> (raw) In-Reply-To: <1447034266-28003-1-git-send-email-okaya@codeaurora.org> Current code gives up when 32 bit DMA is not supported. This problem has been observed on systems without any memory below 4 gig. This patch tests 64 bit support before bailing out to find a working combination. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> --- drivers/scsi/mpt2sas/mpt2sas_base.c | 21 ++++++++++++++++++++- drivers/scsi/mpt3sas/mpt3sas_base.c | 22 +++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index c167911..c61c82a 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c @@ -1217,8 +1217,27 @@ _base_config_dma_addressing(struct MPT2SAS_ADAPTER *ioc, struct pci_dev *pdev) ioc->base_add_sg_single = &_base_add_sg_single_32; ioc->sge_size = sizeof(Mpi2SGESimple32_t); ioc->dma_mask = 32; - } else + } else { + /* Try 64 bit, 32 bit failed */ + consistent_dma_mask = DMA_BIT_MASK(64); + + if (sizeof(dma_addr_t) > 4) { + const uint64_t required_mask = + dma_get_required_mask(&pdev->dev); + if ((required_mask > DMA_BIT_MASK(32)) && + !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && + !pci_set_consistent_dma_mask(pdev, + consistent_dma_mask)) { + ioc->base_add_sg_single = + &_base_add_sg_single_64; + ioc->sge_size = sizeof(Mpi2SGESimple64_t); + ioc->dma_mask = 64; + goto out; + } + } + return -ENODEV; + } out: si_meminfo(&s); diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index d4f1dcd..6dc391c 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -1535,9 +1535,29 @@ _base_config_dma_addressing(struct MPT3SAS_ADAPTER *ioc, struct pci_dev *pdev) ioc->base_add_sg_single = &_base_add_sg_single_32; ioc->sge_size = sizeof(Mpi2SGESimple32_t); ioc->dma_mask = 32; - } else + } else { + /* Try 64 bit, 32 bit failed */ + consistent_dma_mask = DMA_BIT_MASK(64); + if (sizeof(dma_addr_t) > 4) { + const uint64_t required_mask = + dma_get_required_mask(&pdev->dev); + int consistent_mask = + pci_set_consistent_dma_mask(pdev, + consistent_dma_mask); + + if ((required_mask > DMA_BIT_MASK(32)) && + !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && + !consistent_mask) { + ioc->base_add_sg_single = + &_base_add_sg_single_64; + ioc->sge_size = sizeof(Mpi2SGESimple64_t); + ioc->dma_mask = 64; + goto out; + } + } return -ENODEV; + } out: si_meminfo(&s); pr_info(MPT3SAS_FMT -- Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2015-11-09 1:58 UTC|newest] Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-09 1:57 [PATCH V2 0/3] scsi: mptxsas: updates for ARM64 Sinan Kaya 2015-11-09 1:57 ` Sinan Kaya 2015-11-09 1:57 ` Sinan Kaya [this message] 2015-11-09 1:57 ` [PATCH V2 1/3] scsi: mptxsas: try 64 bit DMA when 32 bit DMA fails Sinan Kaya 2015-11-09 7:09 ` Hannes Reinecke 2015-11-09 7:09 ` Hannes Reinecke 2015-11-09 8:59 ` Arnd Bergmann 2015-11-09 8:59 ` Arnd Bergmann 2015-11-09 14:07 ` Sinan Kaya 2015-11-09 14:07 ` Sinan Kaya 2015-11-09 14:33 ` Arnd Bergmann 2015-11-09 14:33 ` Arnd Bergmann 2015-11-09 23:22 ` Sinan Kaya 2015-11-09 23:22 ` Sinan Kaya 2015-11-09 23:29 ` Timur Tabi 2015-11-09 23:29 ` Timur Tabi 2015-11-10 8:38 ` Arnd Bergmann 2015-11-10 8:38 ` Arnd Bergmann 2015-11-10 16:06 ` Sinan Kaya 2015-11-10 16:06 ` Sinan Kaya 2015-11-10 16:47 ` Arnd Bergmann 2015-11-10 16:47 ` Arnd Bergmann 2015-11-10 17:00 ` Timur Tabi 2015-11-10 17:00 ` Timur Tabi 2015-11-10 19:13 ` Arnd Bergmann 2015-11-10 19:13 ` Arnd Bergmann 2015-11-10 21:03 ` Timur Tabi 2015-11-10 21:03 ` Timur Tabi 2015-11-10 21:54 ` Arnd Bergmann 2015-11-10 21:54 ` Arnd Bergmann 2015-11-10 21:59 ` Timur Tabi 2015-11-10 21:59 ` Timur Tabi 2015-11-10 22:08 ` Arnd Bergmann 2015-11-10 22:08 ` Arnd Bergmann 2015-11-10 17:19 ` Sinan Kaya 2015-11-10 17:19 ` Sinan Kaya 2015-11-10 18:27 ` James Bottomley 2015-11-10 18:27 ` James Bottomley 2015-11-10 19:14 ` Sinan Kaya 2015-11-10 19:14 ` Sinan Kaya 2015-11-10 19:43 ` James Bottomley 2015-11-10 19:43 ` James Bottomley 2015-11-10 19:56 ` Sinan Kaya 2015-11-10 19:56 ` Sinan Kaya 2015-11-10 20:05 ` James Bottomley 2015-11-10 20:05 ` James Bottomley 2015-11-10 20:26 ` Sinan Kaya 2015-11-10 20:26 ` Sinan Kaya 2015-11-10 20:35 ` James Bottomley 2015-11-10 20:35 ` James Bottomley 2015-11-10 19:56 ` Arnd Bergmann 2015-11-10 19:56 ` Arnd Bergmann 2015-11-10 20:58 ` Sinan Kaya 2015-11-10 20:58 ` Sinan Kaya 2015-11-10 22:06 ` Arnd Bergmann 2015-11-10 22:06 ` Arnd Bergmann 2015-11-09 14:00 ` Sinan Kaya 2015-11-09 14:00 ` Sinan Kaya 2015-11-09 1:57 ` [PATCH V2 2/3] scsi: fix compiler warning for sg Sinan Kaya 2015-11-09 1:57 ` Sinan Kaya 2015-11-09 14:14 ` Andy Shevchenko 2015-11-09 14:14 ` Andy Shevchenko 2015-11-10 3:21 ` Sinan Kaya 2015-11-10 3:21 ` Sinan Kaya 2015-11-10 3:21 ` Sinan Kaya 2015-11-10 3:26 ` Timur Tabi 2015-11-10 3:26 ` Timur Tabi 2015-11-10 4:51 ` Sinan Kaya 2015-11-10 4:51 ` Sinan Kaya 2015-11-10 4:53 ` Timur Tabi 2015-11-10 4:53 ` Timur Tabi 2015-11-10 9:23 ` Andy Shevchenko 2015-11-10 9:23 ` Andy Shevchenko 2015-11-10 10:09 ` Arnd Bergmann 2015-11-10 10:09 ` Arnd Bergmann 2015-11-09 1:57 ` [PATCH V2 3/3] scsi: mptxsas: offload IRQ execution Sinan Kaya 2015-11-09 1:57 ` Sinan Kaya 2015-11-09 7:15 ` Hannes Reinecke 2015-11-09 7:15 ` Hannes Reinecke 2015-11-09 14:01 ` Sinan Kaya 2015-11-09 14:01 ` Sinan Kaya 2015-11-10 5:59 ` Sinan Kaya 2015-11-10 5:59 ` Sinan Kaya 2015-11-10 5:59 ` Sinan Kaya 2016-03-16 15:31 ` Christopher Covington 2016-03-16 15:31 ` Christopher Covington
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1447034266-28003-2-git-send-email-okaya@codeaurora.org \ --to=okaya@codeaurora.org \ --cc=JBottomley@odin.com \ --cc=MPT-FusionLinux.pdl@avagotech.com \ --cc=abhijit.mahajan@avagotech.com \ --cc=agross@codeaurora.org \ --cc=cov@codeaurora.org \ --cc=jcm@redhat.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=nagalakshmi.nandigama@avagotech.com \ --cc=praveen.krishnamoorthy@avagotech.com \ --cc=sreekanth.reddy@avagotech.com \ --cc=timur@codeaurora.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.