From: Christoph Hellwig <hch@lst.de>
To: Robin Murphy <robin.murphy@arm.com>
Cc: Nikita Yushchenko <nikita.yoush@cogentembedded.com>,
Will Deacon <will.deacon@arm.com>, Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel@lists.infradead.org,
Catalin Marinas <catalin.marinas@arm.com>,
linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
Simon Horman <horms@verge.net.au>,
Bjorn Helgaas <bhelgaas@google.com>,
artemi.ivanov@cogentembedded.com, fkan@apm.com,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v2] arm64: do not set dma masks that device connection can't handle
Date: Tue, 10 Jan 2017 15:57:16 +0100 [thread overview]
Message-ID: <20170110145716.GD27156@lst.de> (raw)
In-Reply-To: <11daacde-5399-039f-80a3-01d7bd13e9e8@arm.com>
On Tue, Jan 10, 2017 at 01:25:12PM +0000, Robin Murphy wrote:
> We still need a way for drivers to communicate a device's probed
> addressing capability to SWIOTLB, so there's always going to have to be
> *some* sort of public interface. Personally, the change in semantics I'd
> like to see is to make dma_set_mask() only fail if DMA is entirely
> disallowed - in the normal case it would always succeed, but the DMA API
> implementation would be permitted to set a smaller mask than requested
> (this is effectively what the x86 IOMMU ops do already).
Yes, this sounds reasonable.
> The significant
> work that would require, though, is changing all the drivers currently
> using this sort of pattern:
>
> if (!dma_set_mask(dev, DMA_BIT_MASK(64))
> /* put device into 64-bit mode */
> else if (!dma_set_mask(dev, DMA_BIT_MASK(32))
> /* put device into 32-bit mode */
> else
> /* error */
While we have this pattern in a lot of places it's already rather
pointless on most architectures as the first dma_set_mask call
won't ever fail for the most common dma_ops implementations.
> to something like this:
>
> if (!dma_set_mask(dev, DMA_BIT_MASK(64))
> /* error */
> if (dma_get_mask(dev) > DMA_BIT_MASK(32))
> /* put device into 64-bit mode */
> else
> /* put device into 32-bit mode */
>
> Which would be a pretty major job.
I don't think it's too bad. Also for many modern devices there is no
need to put the device into a specific mode. It's mostly a historic
issue from the PCI/PCI-X days with the less efficient DAC addressing
scheme.
WARNING: multiple messages have this Message-ID (diff)
From: hch@lst.de (Christoph Hellwig)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] arm64: do not set dma masks that device connection can't handle
Date: Tue, 10 Jan 2017 15:57:16 +0100 [thread overview]
Message-ID: <20170110145716.GD27156@lst.de> (raw)
In-Reply-To: <11daacde-5399-039f-80a3-01d7bd13e9e8@arm.com>
On Tue, Jan 10, 2017 at 01:25:12PM +0000, Robin Murphy wrote:
> We still need a way for drivers to communicate a device's probed
> addressing capability to SWIOTLB, so there's always going to have to be
> *some* sort of public interface. Personally, the change in semantics I'd
> like to see is to make dma_set_mask() only fail if DMA is entirely
> disallowed - in the normal case it would always succeed, but the DMA API
> implementation would be permitted to set a smaller mask than requested
> (this is effectively what the x86 IOMMU ops do already).
Yes, this sounds reasonable.
> The significant
> work that would require, though, is changing all the drivers currently
> using this sort of pattern:
>
> if (!dma_set_mask(dev, DMA_BIT_MASK(64))
> /* put device into 64-bit mode */
> else if (!dma_set_mask(dev, DMA_BIT_MASK(32))
> /* put device into 32-bit mode */
> else
> /* error */
While we have this pattern in a lot of places it's already rather
pointless on most architectures as the first dma_set_mask call
won't ever fail for the most common dma_ops implementations.
> to something like this:
>
> if (!dma_set_mask(dev, DMA_BIT_MASK(64))
> /* error */
> if (dma_get_mask(dev) > DMA_BIT_MASK(32))
> /* put device into 64-bit mode */
> else
> /* put device into 32-bit mode */
>
> Which would be a pretty major job.
I don't think it's too bad. Also for many modern devices there is no
need to put the device into a specific mode. It's mostly a historic
issue from the PCI/PCI-X days with the less efficient DAC addressing
scheme.
next prev parent reply other threads:[~2017-01-10 14:57 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-09 7:30 [PATCH v2] arm64: do not set dma masks that device connection can't handle Nikita Yushchenko
2017-01-09 7:30 ` Nikita Yushchenko
2017-01-10 11:51 ` Will Deacon
2017-01-10 11:51 ` Will Deacon
2017-01-10 12:47 ` Nikita Yushchenko
2017-01-10 12:47 ` Nikita Yushchenko
2017-01-10 13:12 ` Arnd Bergmann
2017-01-10 13:12 ` Arnd Bergmann
2017-01-10 13:25 ` Robin Murphy
2017-01-10 13:25 ` Robin Murphy
2017-01-10 13:42 ` Arnd Bergmann
2017-01-10 13:42 ` Arnd Bergmann
2017-01-10 14:16 ` Robin Murphy
2017-01-10 14:16 ` Robin Murphy
2017-01-10 15:06 ` Arnd Bergmann
2017-01-10 15:06 ` Arnd Bergmann
2017-01-11 12:37 ` Nikita Yushchenko
2017-01-11 12:37 ` Nikita Yushchenko
2017-01-11 16:21 ` Arnd Bergmann
2017-01-11 16:21 ` Arnd Bergmann
2017-01-11 18:28 ` Robin Murphy
2017-01-11 18:28 ` Robin Murphy
2017-01-10 14:59 ` Christoph Hellwig
2017-01-10 14:59 ` Christoph Hellwig
2017-01-10 14:00 ` [PATCH] arm64: avoid increasing DMA masks above what hardware supports Nikita Yushchenko
2017-01-10 14:00 ` Nikita Yushchenko
2017-01-10 17:14 ` Robin Murphy
2017-01-10 17:14 ` Robin Murphy
2017-01-11 7:59 ` Nikita Yushchenko
2017-01-11 7:59 ` Nikita Yushchenko
2017-01-11 11:54 ` Robin Murphy
2017-01-11 11:54 ` Robin Murphy
2017-01-11 13:41 ` Nikita Yushchenko
2017-01-11 13:41 ` Nikita Yushchenko
2017-01-11 14:50 ` Robin Murphy
2017-01-11 14:50 ` Robin Murphy
2017-01-11 16:03 ` Nikita Yushchenko
2017-01-11 16:50 ` Robin Murphy
2017-01-11 16:50 ` Robin Murphy
2017-01-11 18:31 ` [PATCH 0/2] arm64: fix handling of DMA masks wider than bus supports Nikita Yushchenko
2017-01-11 18:31 ` Nikita Yushchenko
2017-01-11 18:31 ` [PATCH 1/2] dma-mapping: let arch know origin of dma range passed to arch_setup_dma_ops() Nikita Yushchenko
2017-01-11 18:31 ` Nikita Yushchenko
2017-01-11 21:08 ` Arnd Bergmann
2017-01-11 21:08 ` Arnd Bergmann
2017-01-12 5:52 ` Nikita Yushchenko
2017-01-12 5:52 ` Nikita Yushchenko
2017-01-12 6:33 ` Nikita Yushchenko
2017-01-12 6:33 ` Nikita Yushchenko
2017-01-12 13:28 ` Arnd Bergmann
2017-01-12 13:28 ` Arnd Bergmann
2017-01-12 13:39 ` Nikita Yushchenko
2017-01-12 13:39 ` Nikita Yushchenko
2017-01-12 12:16 ` Will Deacon
2017-01-12 12:16 ` Will Deacon
2017-01-12 13:25 ` Arnd Bergmann
2017-01-12 13:25 ` Arnd Bergmann
2017-01-12 13:43 ` Robin Murphy
2017-01-12 13:43 ` Robin Murphy
2017-01-13 10:40 ` kbuild test robot
2017-01-13 10:40 ` kbuild test robot
2017-01-11 18:31 ` [PATCH 2/2] arm64: avoid increasing DMA masks above what hardware supports Nikita Yushchenko
2017-01-11 18:31 ` Nikita Yushchenko
2017-01-11 21:11 ` Arnd Bergmann
2017-01-11 21:11 ` Arnd Bergmann
2017-01-12 5:53 ` Nikita Yushchenko
2017-01-12 5:53 ` Nikita Yushchenko
2017-01-13 10:16 ` kbuild test robot
2017-01-13 10:16 ` kbuild test robot
2017-01-10 14:01 ` [PATCH v2] arm64: do not set dma masks that device connection can't handle Nikita Yushchenko
2017-01-10 14:01 ` Nikita Yushchenko
2017-01-10 14:57 ` Christoph Hellwig [this message]
2017-01-10 14:57 ` Christoph Hellwig
2017-01-10 14:51 ` Christoph Hellwig
2017-01-10 14:51 ` Christoph Hellwig
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=20170110145716.GD27156@lst.de \
--to=hch@lst.de \
--cc=arnd@arndb.de \
--cc=artemi.ivanov@cogentembedded.com \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=fkan@apm.com \
--cc=horms@verge.net.au \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=nikita.yoush@cogentembedded.com \
--cc=robin.murphy@arm.com \
--cc=will.deacon@arm.com \
/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 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.