Re: [PATCH 09/10] sh: don't allow non-coherent DMA for NOMMU

From: Rich Felker
Date: Thu Aug 27 2020 - 22:15:35 EST


On Thu, Aug 27, 2020 at 10:00:48PM -0400, Rich Felker wrote:
> On Tue, Jul 14, 2020 at 02:18:55PM +0200, Christoph Hellwig wrote:
> > The code handling non-coherent DMA depends on being able to remap code
> > as non-cached. But that can't be done without an MMU, so using this
> > option on NOMMU builds is broken.
> >
> > Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> > ---
> > arch/sh/Kconfig | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
> > index f8027eee08edae..337eb496c45a0a 100644
> > --- a/arch/sh/Kconfig
> > +++ b/arch/sh/Kconfig
> > @@ -61,6 +61,7 @@ config SUPERH
> > select MAY_HAVE_SPARSE_IRQ
> > select MODULES_USE_ELF_RELA
> > select NEED_SG_DMA_LENGTH
> > + select NO_DMA if !MMU && !DMA_COHERENT
> > select NO_GENERIC_PCI_IOPORT_MAP if PCI
> > select OLD_SIGACTION
> > select OLD_SIGSUSPEND
> > @@ -135,7 +136,7 @@ config DMA_COHERENT
> > bool
>
> This change broke SD card support on J2 because MMC_SPI spuriously
> depends on HAS_DMA. It looks like it can be fixed just by removing
> that dependency from drivers/mmc/host/Kconfig.

It can't. mmp_spi_probe fails with ENOMEM, probably due to trying to
do some DMA setup thing that's not going to be needed if the
underlying SPI device doesn't support/use DMA.

Rich