diff mbox series

[v2,6/6] of/device: Don't NULLify match table in of_match_device() with CONFIG_OF=n

Message ID 20210123034428.2841052-7-swboyd@chromium.org
State Accepted
Commit c52eef0b6ee1a3c57f6fccb30ea0b5ae19358471
Headers show
Series Stop NULLifying match pointer in of_match_device() | expand

Commit Message

Stephen Boyd Jan. 23, 2021, 3:44 a.m. UTC
This effectively reverts 1db73ae39a97 ("of/device: Nullify match table
in of_match_device() for CONFIG_OF=n") because that commit makes it more
surprising to users of this API that the arguments may never be
referenced by any code. This is because the pre-processor will replace
the argument with NULL and then the match table will be left unreferenced
by any code but the compiler optimizer doesn't know to drop it. This can
lead to compilers warning that match tables are unused, when we really
want to pass the match table to the API but have the compiler see that
it's all inlined and not used and then drop the match table while
silencing the warning. We're being too smart here and not giving the
compiler the chance to do dead code elimination.

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Acked-by: Frank Rowand <frowand.list@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Frank Rowand <frowand.list@gmail.com>
---

Please ack so Rob can apply.

 include/linux/of_device.h | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Geert Uytterhoeven Jan. 25, 2021, 8:33 a.m. UTC | #1
On Sat, Jan 23, 2021 at 4:44 AM Stephen Boyd <swboyd@chromium.org> wrote:
> This effectively reverts 1db73ae39a97 ("of/device: Nullify match table

> in of_match_device() for CONFIG_OF=n") because that commit makes it more

> surprising to users of this API that the arguments may never be

> referenced by any code. This is because the pre-processor will replace

> the argument with NULL and then the match table will be left unreferenced

> by any code but the compiler optimizer doesn't know to drop it. This can

> lead to compilers warning that match tables are unused, when we really

> want to pass the match table to the API but have the compiler see that

> it's all inlined and not used and then drop the match table while

> silencing the warning. We're being too smart here and not giving the

> compiler the chance to do dead code elimination.

>

> Signed-off-by: Stephen Boyd <swboyd@chromium.org>

> Acked-by: Frank Rowand <frowand.list@gmail.com>


Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>


Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Arnd Bergmann Jan. 25, 2021, 9:46 a.m. UTC | #2
On Sat, Jan 23, 2021 at 4:44 AM Stephen Boyd <swboyd@chromium.org> wrote:
>

> This effectively reverts 1db73ae39a97 ("of/device: Nullify match table

> in of_match_device() for CONFIG_OF=n") because that commit makes it more

> surprising to users of this API that the arguments may never be

> referenced by any code. This is because the pre-processor will replace

> the argument with NULL and then the match table will be left unreferenced

> by any code but the compiler optimizer doesn't know to drop it. This can

> lead to compilers warning that match tables are unused, when we really

> want to pass the match table to the API but have the compiler see that

> it's all inlined and not used and then drop the match table while

> silencing the warning. We're being too smart here and not giving the

> compiler the chance to do dead code elimination.

>

> Signed-off-by: Stephen Boyd <swboyd@chromium.org>

> Acked-by: Frank Rowand <frowand.list@gmail.com>

> Cc: Arnd Bergmann <arnd@arndb.de>

> Cc: Geert Uytterhoeven <geert@linux-m68k.org>

> Cc: Rob Herring <robh+dt@kernel.org>

> Cc: Frank Rowand <frowand.list@gmail.com>


Reviewed-by: Arnd Bergmann <arnd@arndb.de>
diff mbox series

Patch

diff --git a/include/linux/of_device.h b/include/linux/of_device.h
index 07ca187fc5e4..937f32f6aecb 100644
--- a/include/linux/of_device.h
+++ b/include/linux/of_device.h
@@ -99,13 +99,11 @@  static inline int of_device_uevent_modalias(struct device *dev,
 
 static inline void of_device_node_put(struct device *dev) { }
 
-static inline const struct of_device_id *__of_match_device(
+static inline const struct of_device_id *of_match_device(
 		const struct of_device_id *matches, const struct device *dev)
 {
 	return NULL;
 }
-#define of_match_device(matches, dev)	\
-	__of_match_device(of_match_ptr(matches), (dev))
 
 static inline struct device_node *of_cpu_device_node_get(int cpu)
 {