From: Arnd Bergmann <arnd@arndb.de>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexandre Courbot <acourbot@nvidia.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
gnurou@gmail.com
Subject: Re: [PATCH v4 1/3] mmc: sdhci: Set DMA mask when adding host
Date: Wed, 16 Mar 2016 11:05:34 +0100 [thread overview]
Message-ID: <2646031.AqmqXYeZyr@wuerfel> (raw)
In-Reply-To: <56E926D8.7020908@intel.com>
On Wednesday 16 March 2016 11:26:48 Adrian Hunter wrote:
> On 16/03/16 11:07, Arnd Bergmann wrote:
> > On Wednesday 16 March 2016 10:43:33 Adrian Hunter wrote:
> >>> +
> >>> + /* 32-bit mask as default & fallback */
> >>> + if (ret) {
> >>> + ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
> >>
> >> What happens if device enumeration (e.g. of_dma_configure) has already set a
> >> more restrictive DMA mask?
> >>
> >>
> >
> > In this case, dma_set_mask_and_coherent() is supposed to check the
> > bus properties settings again and fail dma_set_mask_and_coherent().
>
> So the logic this patch introduces will disable DMA in that case. Would it
> be better just to leave the DMA mask alone (as it does now for most sdhci
> drivers) in the 32-bit case?
It depends to some degree on the specific capabilities of the system.
Basically when the driver asks for a 32-bit mask, we have to check if that
is actually possible, and there are a couple of possible outcomes:
- If the bus is less than 32-bit wide but the RAM is small enough to
to fit within the addressable range of the bus, the
dma_set_mask_and_coherent() should succeed
- If the RAM is larger than what the bus can address, but swiotlb
is configured and the swiotlb bounce buffer is addressable by
the bus, dma_set_mask_and_coherent() should also succeed
- If there is no swiotlb and there is RAM that fits into the 32-bit
mask but that is not addressable by the bus, the
dma_set_mask_and_coherent() should fail, and the driver should not
use DMA.
- Similarly, if swiotlb is enabled, but its bounce buffer is not
reachable by the bus, the call needs to fail and the driver must
not use DMA.
Arnd
next prev parent reply other threads:[~2016-03-16 10:05 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-07 2:07 [PATCH v4 0/3] mmc: sdhci: Set DMA mask properly Alexandre Courbot
2016-03-07 2:07 ` [PATCH v4 1/3] mmc: sdhci: Set DMA mask when adding host Alexandre Courbot
2016-03-16 8:43 ` Adrian Hunter
2016-03-16 9:07 ` Arnd Bergmann
2016-03-16 9:26 ` Adrian Hunter
2016-03-16 10:05 ` Arnd Bergmann [this message]
2016-03-07 2:07 ` [PATCH v4 2/3] mmc: sdhci-acpi: Remove enable_dma() hook Alexandre Courbot
2016-03-07 2:07 ` [PATCH v4 3/3] mmc: sdhci-pci: Do not set DMA mask in enable_dma() Alexandre Courbot
2016-03-08 13:18 ` Adrian Hunter
2016-03-14 3:15 ` Alexandre Courbot
2016-03-14 13:00 ` Adrian Hunter
2016-03-14 15:52 ` Bjorn Helgaas
2016-03-16 12:46 ` [PATCH v4 0/3] mmc: sdhci: Set DMA mask properly Adrian Hunter
2016-03-16 13:09 ` Ulf Hansson
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=2646031.AqmqXYeZyr@wuerfel \
--to=arnd@arndb.de \
--cc=acourbot@nvidia.com \
--cc=adrian.hunter@intel.com \
--cc=gnurou@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=ulf.hansson@linaro.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox