All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Randy Dunlap <rdunlap@infradead.org>
Cc: devicetree@vger.kernel.org, Frank Rowand <frowand.list@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA
Date: Tue, 1 Jun 2021 10:34:29 -0500	[thread overview]
Message-ID: <CAL_JsqKtNJdjWF6i05kXPzZn7NwOTGW-2jbhcPGQc_deJKuQ0A@mail.gmail.com> (raw)
In-Reply-To: <93bcda31-00ad-e97f-f700-b84977ede981@infradead.org>

On Fri, May 28, 2021 at 5:32 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> On 5/28/21 3:09 PM, Randy Dunlap wrote:
> > On 5/27/21 3:32 PM, Rob Herring wrote:
> >> Reserved memory regions can be used for more than just DMA regions, so
> >> only enabling on DMA_DECLARE_COHERENT (via HAS_DMA) or DMA_CMA is wrong.
> >> This effectively doesn't matter except for the few cases arches select
> >> NO_DMA.
> >>
> >> At least, these users of RESERVEDMEM_OF_DECLARE depend on reserved memory
> >> support:
> >>
> >> arch/riscv/mm/init.c:RESERVEDMEM_OF_DECLARE(elfcorehdr, "linux,elfcorehdr", elfcore_hdr_setup);
> >> drivers/memory/tegra/tegra210-emc-table.c:RESERVEDMEM_OF_DECLARE(tegra210_emc_table, "nvidia,tegra210-emc-table",
> >> drivers/soc/fsl/qbman/bman_ccsr.c:RESERVEDMEM_OF_DECLARE(bman_fbpr, "fsl,bman-fbpr", bman_fbpr);
> >> drivers/soc/fsl/qbman/qman_ccsr.c:RESERVEDMEM_OF_DECLARE(qman_fqd, "fsl,qman-fqd", qman_fqd);
> >> drivers/soc/fsl/qbman/qman_ccsr.c:RESERVEDMEM_OF_DECLARE(qman_pfdr, "fsl,qman-pfdr", qman_pfdr);
> >>
> >> Let's simplify things and enable OF_RESERVED_MEM when OF_EARLY_FLATTREE is
> >> enabled.
> >>
> >> Cc: Christoph Hellwig <hch@lst.de>
> >> Signed-off-by: Rob Herring <robh@kernel.org>
> >
> > Hi Rob,
> >
> > I'm OK with this patch, but with or without this patch,
> > compiling kernel/dma/coherent.c without HAS_IOMEM (!)
> > has build errors:
> >
> > s390-linux-ld: kernel/dma/coherent.o: in function `dma_init_coherent_memory':
> > coherent.c:(.text+0x5ae): undefined reference to `memremap'
> > s390-linux-ld: coherent.c:(.text+0x7a4): undefined reference to `memunmap'
> > s390-linux-ld: kernel/dma/coherent.o: in function `dma_declare_coherent_memory':
> > coherent.c:(.text+0xd84): undefined reference to `memunmap'
> >
> >
> > along with a slew of other build errors (arch/s390/, CONFIG_PCI is not set,
> > CONFIG_HAS_IOMEM is not set):
> >
> > s390-linux-ld: drivers/irqchip/irq-al-fic.o: in function `al_fic_init_dt':
> > irq-al-fic.c:(.init.text+0x6a0): undefined reference to `iounmap'
> > s390-linux-ld: drivers/char/xillybus/xillybus_of.o: in function `xilly_drv_probe':
> > xillybus_of.c:(.text+0x2c8): undefined reference to `devm_platform_ioremap_resource'
> > s390-linux-ld: drivers/pcmcia/cistpl.o: in function `set_cis_map':
> > cistpl.c:(.text+0x87a): undefined reference to `ioremap'
> > s390-linux-ld: cistpl.c:(.text+0x99a): undefined reference to `iounmap'
> > s390-linux-ld: cistpl.c:(.text+0xa34): undefined reference to `iounmap'
> > s390-linux-ld: cistpl.c:(.text+0xaa6): undefined reference to `ioremap'
> > s390-linux-ld: drivers/pcmcia/cistpl.o: in function `release_cis_mem':
> > cistpl.c:(.text+0x2976): undefined reference to `iounmap'
> > s390-linux-ld: drivers/of/address.o: in function `of_iomap':
> > address.c:(.text+0x1f02): undefined reference to `ioremap'
> > s390-linux-ld: drivers/of/address.o: in function `of_io_request_and_map':
> > address.c:(.text+0x2030): undefined reference to `ioremap'
> >
>
> Oops, sorry. I should have said that this is also with my
> experimental path that I thought you suggested earlier this
> week (although I could have misunderstood you):

Yes, that's what I'd like, but no doubt that change alone will make
things worse.

> --- linux-next-20210526.orig/drivers/of/Kconfig
> +++ linux-next-20210526/drivers/of/Kconfig
> @@ -64,7 +64,7 @@ config OF_DYNAMIC
>
>  config OF_ADDRESS
>         def_bool y
> -       depends on !SPARC && (HAS_IOMEM || UML)
> +       depends on !SPARC
>
>  config OF_IRQ
>         def_bool y
>
> [rebuild]
>
> OK, even without this small patch, the result is about the same (just
> a few different function names):
>
> s390-linux-ld: kernel/dma/coherent.o: in function `dma_init_coherent_memory':
> coherent.c:(.text+0x5ae): undefined reference to `memremap'
> s390-linux-ld: coherent.c:(.text+0x7a4): undefined reference to `memunmap'
> s390-linux-ld: kernel/dma/coherent.o: in function `dma_declare_coherent_memory':
> coherent.c:(.text+0xd84): undefined reference to `memunmap'
>
> s390-linux-ld: drivers/irqchip/irq-al-fic.o: in function `al_fic_init_dt':
> irq-al-fic.c:(.init.text+0x64): undefined reference to `of_iomap'
> s390-linux-ld: irq-al-fic.c:(.init.text+0x6a0): undefined reference to `iounmap'
> s390-linux-ld: drivers/char/xillybus/xillybus_of.o: in function `xilly_drv_probe':
> xillybus_of.c:(.text+0x2c8): undefined reference to `devm_platform_ioremap_resource'
> s390-linux-ld: drivers/pcmcia/cistpl.o: in function `set_cis_map':
> cistpl.c:(.text+0x87a): undefined reference to `ioremap'
> s390-linux-ld: cistpl.c:(.text+0x99a): undefined reference to `iounmap'
> s390-linux-ld: cistpl.c:(.text+0xa34): undefined reference to `iounmap'
> s390-linux-ld: cistpl.c:(.text+0xaa6): undefined reference to `ioremap'
> s390-linux-ld: drivers/pcmcia/cistpl.o: in function `release_cis_mem':
> cistpl.c:(.text+0x2976): undefined reference to `iounmap'

Empty stubs for ioremap, iounmap, memremap, and memunmap would fix all
these, right? Though maybe adding stubs is more complicated than I'm
thinking given all the architecture specifics.

Rob

      reply	other threads:[~2021-06-01 15:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-27 22:32 [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA Rob Herring
2021-05-28 22:09 ` Randy Dunlap
2021-05-28 22:32   ` Randy Dunlap
2021-06-01 15:34     ` Rob Herring [this message]

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=CAL_JsqKtNJdjWF6i05kXPzZn7NwOTGW-2jbhcPGQc_deJKuQ0A@mail.gmail.com \
    --to=robh@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@infradead.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 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.