All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA
@ 2021-05-27 22:32 Rob Herring
  2021-05-28 22:09 ` Randy Dunlap
  0 siblings, 1 reply; 4+ messages in thread
From: Rob Herring @ 2021-05-27 22:32 UTC (permalink / raw)
  To: devicetree, Frank Rowand; +Cc: linux-kernel, Christoph Hellwig

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>
---
This is needed to prevent build break on UML with this patch:

https://lore.kernel.org/lkml/20210527193841.1284169-1-robh@kernel.org/

 drivers/of/Kconfig | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
index 18450437d5d5..3dfeae8912df 100644
--- a/drivers/of/Kconfig
+++ b/drivers/of/Kconfig
@@ -75,9 +75,7 @@ config OF_NET
 	def_bool y
 
 config OF_RESERVED_MEM
-	bool
-	depends on OF_EARLY_FLATTREE
-	default y if DMA_DECLARE_COHERENT || DMA_CMA
+	def_bool OF_EARLY_FLATTREE
 
 config OF_RESOLVE
 	bool
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA
  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
  0 siblings, 1 reply; 4+ messages in thread
From: Randy Dunlap @ 2021-05-28 22:09 UTC (permalink / raw)
  To: Rob Herring, devicetree, Frank Rowand; +Cc: linux-kernel, Christoph Hellwig

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'

> ---
> This is needed to prevent build break on UML with this patch:
> 
> https://lore.kernel.org/lkml/20210527193841.1284169-1-robh@kernel.org/
> 
>  drivers/of/Kconfig | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
> index 18450437d5d5..3dfeae8912df 100644
> --- a/drivers/of/Kconfig
> +++ b/drivers/of/Kconfig
> @@ -75,9 +75,7 @@ config OF_NET
>  	def_bool y
>  
>  config OF_RESERVED_MEM
> -	bool
> -	depends on OF_EARLY_FLATTREE
> -	default y if DMA_DECLARE_COHERENT || DMA_CMA
> +	def_bool OF_EARLY_FLATTREE
>  
>  config OF_RESOLVE
>  	bool
> 


-- 
~Randy


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA
  2021-05-28 22:09 ` Randy Dunlap
@ 2021-05-28 22:32   ` Randy Dunlap
  2021-06-01 15:34     ` Rob Herring
  0 siblings, 1 reply; 4+ messages in thread
From: Randy Dunlap @ 2021-05-28 22:32 UTC (permalink / raw)
  To: Rob Herring, devicetree, Frank Rowand; +Cc: linux-kernel, Christoph Hellwig

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):

--- 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'


>> ---
>> This is needed to prevent build break on UML with this patch:
>>
>> https://lore.kernel.org/lkml/20210527193841.1284169-1-robh@kernel.org/
>>
>>  drivers/of/Kconfig | 4 +---
>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
>> index 18450437d5d5..3dfeae8912df 100644
>> --- a/drivers/of/Kconfig
>> +++ b/drivers/of/Kconfig
>> @@ -75,9 +75,7 @@ config OF_NET
>>  	def_bool y
>>  
>>  config OF_RESERVED_MEM
>> -	bool
>> -	depends on OF_EARLY_FLATTREE
>> -	default y if DMA_DECLARE_COHERENT || DMA_CMA
>> +	def_bool OF_EARLY_FLATTREE
>>  
>>  config OF_RESOLVE
>>  	bool
>>
> 
> 


-- 
~Randy


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] of: Drop reserved mem dependency on DMA_DECLARE_COHERENT and DMA_CMA
  2021-05-28 22:32   ` Randy Dunlap
@ 2021-06-01 15:34     ` Rob Herring
  0 siblings, 0 replies; 4+ messages in thread
From: Rob Herring @ 2021-06-01 15:34 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: devicetree, Frank Rowand, linux-kernel, Christoph Hellwig

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-06-01 15:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 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.