From: Christoph Hellwig <hch@lst.de>
To: Rich Felker <dalias@libc.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Christoph Hellwig <hch@lst.de>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Linux-sh list <linux-sh@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
linux-spi@vger.kernel.org
Subject: Re: [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU
Date: Sat, 29 Aug 2020 10:31:21 +0200 [thread overview]
Message-ID: <20200829083121.GA7851@lst.de> (raw)
In-Reply-To: <20200828150942.GV3265@brightrain.aerifal.cx>
On Fri, Aug 28, 2020 at 11:09:43AM -0400, Rich Felker wrote:
> > However, by looking at the code, one get the feeling that the DMA
> > support is somewhat prepared to be made optional. I guess it has never
> > been really tested, as the Kconfig option has "depends on HAS_DMA" -
> > and it's been like that as long as I can remember.
>
> It always worked on our "byte-banged" SPI controller, with no DMA
> controller present, before Christoph's changes in this patch series,
Before that nommu sh builds provided a DMA mapping implementation
that even worked for the streaming side (dma_map_*), but would corrupt
data if you used dma_alloc_coherent memory to communicate with the
device.
> and seems to be working now (although I have some other, hopefully
> unrelated regressions to debug) with #ifdef CONFIG_HAS_DMA around the
> if (spi->master->dev.parent->dma_mask) block in mmc_spi_probe. That's
> probably not the right fix though -- why isn't it checking
> host->dma_dev instead and only attempting DMA setup if dma_dev is
> non-null?
I don't think dma_dev can be NULL right now. dma_dev is assigned here:
if (spi->master->dev.parent->dma_mask) {
struct device *dev = spi->master->dev.parent;
host->dma_dev = dev;
but for any OF or real bus device dma_mask never is zero (it actually is
a pointer), and the value of it also is initialized to 32-bit by default,
making this effectively an "if (1) {". The driver needs some way to
communicate if a given device actually is DMA capable or not. Or is that
purely a factor of the platform which would be a little strange.
In which case we should do something like:
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 39bb1e30c2d722..3b0cc9a70e6432 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1374,7 +1374,7 @@ static int mmc_spi_probe(struct spi_device *spi)
if (!host->data)
goto fail_nobuf1;
- if (spi->master->dev.parent->dma_mask) {
+ if (IS_ENABLED(CONFIG_HAS_DMA)) {
struct device *dev = spi->master->dev.parent;
host->dma_dev = dev;
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Rich Felker <dalias@libc.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Christoph Hellwig <hch@lst.de>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Linux-sh list <linux-sh@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
linux-spi@vger.kernel.org
Subject: Re: [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU
Date: Sat, 29 Aug 2020 08:31:21 +0000 [thread overview]
Message-ID: <20200829083121.GA7851@lst.de> (raw)
In-Reply-To: <20200828150942.GV3265@brightrain.aerifal.cx>
On Fri, Aug 28, 2020 at 11:09:43AM -0400, Rich Felker wrote:
> > However, by looking at the code, one get the feeling that the DMA
> > support is somewhat prepared to be made optional. I guess it has never
> > been really tested, as the Kconfig option has "depends on HAS_DMA" -
> > and it's been like that as long as I can remember.
>
> It always worked on our "byte-banged" SPI controller, with no DMA
> controller present, before Christoph's changes in this patch series,
Before that nommu sh builds provided a DMA mapping implementation
that even worked for the streaming side (dma_map_*), but would corrupt
data if you used dma_alloc_coherent memory to communicate with the
device.
> and seems to be working now (although I have some other, hopefully
> unrelated regressions to debug) with #ifdef CONFIG_HAS_DMA around the
> if (spi->master->dev.parent->dma_mask) block in mmc_spi_probe. That's
> probably not the right fix though -- why isn't it checking
> host->dma_dev instead and only attempting DMA setup if dma_dev is
> non-null?
I don't think dma_dev can be NULL right now. dma_dev is assigned here:
if (spi->master->dev.parent->dma_mask) {
struct device *dev = spi->master->dev.parent;
host->dma_dev = dev;
but for any OF or real bus device dma_mask never is zero (it actually is
a pointer), and the value of it also is initialized to 32-bit by default,
making this effectively an "if (1) {". The driver needs some way to
communicate if a given device actually is DMA capable or not. Or is that
purely a factor of the platform which would be a little strange.
In which case we should do something like:
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 39bb1e30c2d722..3b0cc9a70e6432 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1374,7 +1374,7 @@ static int mmc_spi_probe(struct spi_device *spi)
if (!host->data)
goto fail_nobuf1;
- if (spi->master->dev.parent->dma_mask) {
+ if (IS_ENABLED(CONFIG_HAS_DMA)) {
struct device *dev = spi->master->dev.parent;
host->dma_dev = dev;
next prev parent reply other threads:[~2020-08-29 8:31 UTC|newest]
Thread overview: 163+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-24 16:26 ioremap and dma cleanups and fixes for superh Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 01/10] sh: remove -Werror from Makefiles Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 02/10] sh: sort the selects for SUPERH alphabetically Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 03/10] sh: remove __KERNEL__ ifdefs from non-UAPI headers Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 04/10] sh: move ioremap_fixed details out of <asm/io.h> Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 05/10] sh: move the ioremap implementation out of line Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 06/10] sh: don't include <asm/io_trapped.h> in <asm/io.h> Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 07/10] sh: unexport register_trapped_io and match_trapped_io_handler Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 08/10] dma-mapping: consolidate the NO_DMA definition in kernel/dma/Kconfig Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-03-24 16:26 ` [PATCH 10/10] sh: use the generic dma coherent remap allocator Christoph Hellwig
2020-03-24 16:26 ` Christoph Hellwig
2020-06-26 8:07 ` ioremap and dma cleanups and fixes for superh (resend) Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 01/10] sh: remove -Werror from Makefiles Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 02/10] sh: sort the selects for SUPERH alphabetically Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 03/10] sh: remove __KERNEL__ ifdefs from non-UAPI headers Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 04/10] sh: move ioremap_fixed details out of <asm/io.h> Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 05/10] sh: move the ioremap implementation out of line Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 06/10] sh: don't include <asm/io_trapped.h> in <asm/io.h> Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 07/10] sh: unexport register_trapped_io and match_trapped_io_handler Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 08/10] dma-mapping: consolidate the NO_DMA definition in kernel/dma/Kconfig Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-06-28 0:53 ` Rob Landley
2020-06-28 1:01 ` Rob Landley
2020-06-28 7:24 ` Christoph Hellwig
2020-06-28 7:24 ` Christoph Hellwig
2020-06-26 8:07 ` [PATCH 10/10] sh: use the generic dma coherent remap allocator Christoph Hellwig
2020-06-26 8:07 ` Christoph Hellwig
2020-07-14 12:18 ` ioremap and dma cleanups and fixes for superh (2nd resend) Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 01/10] sh: remove -Werror from Makefiles Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 02/10] sh: sort the selects for SUPERH alphabetically Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 03/10] sh: remove __KERNEL__ ifdefs from non-UAPI headers Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 04/10] sh: move ioremap_fixed details out of <asm/io.h> Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 05/10] sh: move the ioremap implementation out of line Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 06/10] sh: don't include <asm/io_trapped.h> in <asm/io.h> Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 07/10] sh: unexport register_trapped_io and match_trapped_io_handler Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:18 ` [PATCH 08/10] dma-mapping: consolidate the NO_DMA definition in kernel/dma/Kconfig Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-21 3:17 ` Rich Felker
2020-07-21 3:17 ` Rich Felker
2020-07-21 5:11 ` Christoph Hellwig
2020-07-21 5:11 ` Christoph Hellwig
2020-07-22 0:43 ` Rich Felker
2020-07-22 0:43 ` Rich Felker
2020-07-14 12:18 ` [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-08-28 2:00 ` Rich Felker
2020-08-28 2:00 ` Rich Felker
2020-08-28 2:11 ` Rich Felker
2020-08-28 2:11 ` Rich Felker
2020-08-28 4:24 ` Christoph Hellwig
2020-08-28 4:24 ` Christoph Hellwig
2020-08-28 9:26 ` Ulf Hansson
2020-08-28 9:26 ` Ulf Hansson
2020-08-28 15:09 ` Rich Felker
2020-08-28 15:09 ` Rich Felker
2020-08-29 8:31 ` Christoph Hellwig [this message]
2020-08-29 8:31 ` Christoph Hellwig
2020-08-31 11:28 ` Ulf Hansson
2020-08-31 11:28 ` Ulf Hansson
2020-07-14 12:18 ` [PATCH 10/10] sh: use the generic dma coherent remap allocator Christoph Hellwig
2020-07-14 12:18 ` Christoph Hellwig
2020-07-14 12:31 ` ioremap and dma cleanups and fixes for superh (2nd resend) John Paul Adrian Glaubitz
2020-07-14 12:31 ` John Paul Adrian Glaubitz
2020-07-14 15:59 ` Rich Felker
2020-07-14 15:59 ` Rich Felker
2020-07-14 16:10 ` John Paul Adrian Glaubitz
2020-07-14 16:10 ` John Paul Adrian Glaubitz
2020-07-14 23:12 ` John Paul Adrian Glaubitz
2020-07-14 23:12 ` John Paul Adrian Glaubitz
2020-07-14 23:14 ` John Paul Adrian Glaubitz
2020-07-14 23:14 ` John Paul Adrian Glaubitz
2020-07-15 3:12 ` Rich Felker
2020-07-15 3:12 ` Rich Felker
2020-07-15 6:39 ` John Paul Adrian Glaubitz
2020-07-15 6:39 ` John Paul Adrian Glaubitz
2020-07-15 7:27 ` Geert Uytterhoeven
2020-07-15 7:27 ` Geert Uytterhoeven
2020-07-15 7:37 ` John Paul Adrian Glaubitz
2020-07-15 7:37 ` John Paul Adrian Glaubitz
2020-07-15 8:06 ` Geert Uytterhoeven
2020-07-15 8:06 ` Geert Uytterhoeven
2020-07-15 7:46 ` John Paul Adrian Glaubitz
2020-07-15 7:46 ` John Paul Adrian Glaubitz
2020-07-15 7:51 ` John Paul Adrian Glaubitz
2020-07-15 8:11 ` Geert Uytterhoeven
2020-07-15 8:11 ` Geert Uytterhoeven
2020-07-15 8:27 ` John Paul Adrian Glaubitz
2020-07-15 8:27 ` John Paul Adrian Glaubitz
2020-07-15 14:37 ` John Paul Adrian Glaubitz
2020-07-15 14:37 ` John Paul Adrian Glaubitz
2020-07-15 15:39 ` John Paul Adrian Glaubitz
2020-07-15 15:39 ` John Paul Adrian Glaubitz
2020-07-15 16:18 ` John Paul Adrian Glaubitz
2020-07-15 16:18 ` John Paul Adrian Glaubitz
2020-07-15 18:21 ` Geert Uytterhoeven
2020-07-15 18:21 ` Geert Uytterhoeven
2020-07-15 18:27 ` John Paul Adrian Glaubitz
2020-07-15 18:27 ` John Paul Adrian Glaubitz
2020-07-16 9:40 ` Peter Zijlstra
2020-07-16 9:40 ` Peter Zijlstra
2020-07-16 10:05 ` John Paul Adrian Glaubitz
2020-07-16 10:05 ` John Paul Adrian Glaubitz
2020-07-16 10:29 ` peterz
2020-07-16 10:29 ` peterz
2020-07-16 10:54 ` John Paul Adrian Glaubitz
2020-07-16 10:54 ` John Paul Adrian Glaubitz
2020-07-16 11:01 ` peterz
2020-07-16 11:01 ` peterz
2020-07-16 11:03 ` John Paul Adrian Glaubitz
2020-07-16 11:03 ` John Paul Adrian Glaubitz
2020-07-16 11:37 ` peterz
2020-07-16 11:37 ` peterz
2020-07-16 12:04 ` peterz
2020-07-16 12:04 ` peterz
2020-07-16 18:14 ` John Paul Adrian Glaubitz
2020-07-16 18:14 ` John Paul Adrian Glaubitz
2020-07-16 19:28 ` Peter Zijlstra
2020-07-16 19:28 ` Peter Zijlstra
2020-07-16 19:33 ` John Paul Adrian Glaubitz
2020-07-16 19:33 ` John Paul Adrian Glaubitz
2020-07-16 11:30 ` John Paul Adrian Glaubitz
2020-07-16 11:30 ` John Paul Adrian Glaubitz
2020-07-15 8:07 ` Geert Uytterhoeven
2020-07-15 8:07 ` Geert Uytterhoeven
2020-07-16 11:31 ` John Paul Adrian Glaubitz
2020-07-16 11:31 ` John Paul Adrian Glaubitz
2020-07-20 13:38 ` Christoph Hellwig
2020-07-20 13:38 ` Christoph Hellwig
2020-07-20 13:42 ` John Paul Adrian Glaubitz
2020-07-20 13:42 ` John Paul Adrian Glaubitz
2020-07-20 14:53 ` Rich Felker
2020-07-20 14:53 ` Rich Felker
2020-07-21 3:20 ` Rich Felker
2020-07-21 3:20 ` Rich Felker
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=20200829083121.GA7851@lst.de \
--to=hch@lst.de \
--cc=dalias@libc.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=ulf.hansson@linaro.org \
--cc=ysato@users.sourceforge.jp \
/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.