2018-09-05 00:40:30

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warnings after merge of the devicetree tree

Hi Rob,

After merging the devicetree tree, today's linux-next build (x86_64
allmodconfig) produced these warnings:

WARNING: vmlinux.o(.text+0xf40a16): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_addr_cells
The function of_fdt_limit_memory() references
the variable __initdata dt_root_addr_cells.
This is often because of_fdt_limit_memory lacks a __initdata
annotation or the annotation of dt_root_addr_cells is wrong.

WARNING: vmlinux.o(.text+0xf40a1d): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_size_cells
The function of_fdt_limit_memory() references
the variable __initdata dt_root_size_cells.
This is often because of_fdt_limit_memory lacks a __initdata
annotation or the annotation of dt_root_size_cells is wrong.

Introduced by commit

bb35ea5c7c30 ("of/fdt: avoid re-parsing '#{address,size}-cells' in of_fdt_limit_memory")

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2018-09-05 01:55:34

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warnings after merge of the devicetree tree

Hi all,

On Wed, 5 Sep 2018 10:39:06 +1000 Stephen Rothwell <[email protected]> wrote:
>
> After merging the devicetree tree, today's linux-next build (x86_64
> allmodconfig) produced these warnings:
>
> WARNING: vmlinux.o(.text+0xf40a16): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_addr_cells
> The function of_fdt_limit_memory() references
> the variable __initdata dt_root_addr_cells.
> This is often because of_fdt_limit_memory lacks a __initdata
> annotation or the annotation of dt_root_addr_cells is wrong.
>
> WARNING: vmlinux.o(.text+0xf40a1d): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_size_cells
> The function of_fdt_limit_memory() references
> the variable __initdata dt_root_size_cells.
> This is often because of_fdt_limit_memory lacks a __initdata
> annotation or the annotation of dt_root_size_cells is wrong.
>
> Introduced by commit
>
> bb35ea5c7c30 ("of/fdt: avoid re-parsing '#{address,size}-cells' in of_fdt_limit_memory")

It turns out that section mismatches are fatal errors in some configs (like powerpc allnoconfig), so I have added the following patch for today:

From: Stephen Rothwell <[email protected]>
Date: Wed, 5 Sep 2018 11:50:29 +1000
Subject: [PATCH] mark of_fdt_limit_memory() as __init

Signed-off-by: Stephen Rothwell <[email protected]>
---
drivers/of/fdt.c | 2 +-
include/linux/of_fdt.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index fef4b2c8a171..fe78bed8925f 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -39,7 +39,7 @@
* memory entries in the /memory node. This function may be called
* any time after initial_boot_param is set.
*/
-void of_fdt_limit_memory(int limit)
+void __init of_fdt_limit_memory(int limit)
{
int memory;
int len;
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index b9cd9ebdf9b9..19ebf22a7862 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -46,7 +46,7 @@ extern char __dtb_end[];

/* Other Prototypes */
extern u64 of_flat_dt_translate_address(unsigned long node);
-extern void of_fdt_limit_memory(int limit);
+extern void __init of_fdt_limit_memory(int limit);
#endif /* CONFIG_OF_FLATTREE */

#ifdef CONFIG_OF_EARLY_FLATTREE
--
2.18.0

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2018-09-05 11:22:32

by Rob Herring

[permalink] [raw]
Subject: Re: linux-next: build warnings after merge of the devicetree tree

On Tue, Sep 4, 2018 at 8:54 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi all,
>
> On Wed, 5 Sep 2018 10:39:06 +1000 Stephen Rothwell <[email protected]> wrote:
> >
> > After merging the devicetree tree, today's linux-next build (x86_64
> > allmodconfig) produced these warnings:
> >
> > WARNING: vmlinux.o(.text+0xf40a16): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_addr_cells
> > The function of_fdt_limit_memory() references
> > the variable __initdata dt_root_addr_cells.
> > This is often because of_fdt_limit_memory lacks a __initdata
> > annotation or the annotation of dt_root_addr_cells is wrong.
> >
> > WARNING: vmlinux.o(.text+0xf40a1d): Section mismatch in reference from the function of_fdt_limit_memory() to the variable .init.data:dt_root_size_cells
> > The function of_fdt_limit_memory() references
> > the variable __initdata dt_root_size_cells.
> > This is often because of_fdt_limit_memory lacks a __initdata
> > annotation or the annotation of dt_root_size_cells is wrong.
> >
> > Introduced by commit
> >
> > bb35ea5c7c30 ("of/fdt: avoid re-parsing '#{address,size}-cells' in of_fdt_limit_memory")
>
> It turns out that section mismatches are fatal errors in some configs (like powerpc allnoconfig), so I have added the following patch for today:

Sorry about that. I've fixed it now.

Rob