2019-10-04 21:44:28

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 10/10] of/device: Don't NULLify match table in of_match_device() with CONFIG_OF=n

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.

Cc: Arnd Bergmann <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Frank Rowand <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---

Please ack or pick for immediate merge so the last patch can be merged.

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

diff --git a/include/linux/of_device.h b/include/linux/of_device.h
index 8d31e39dd564..3f8ca55bc693 100644
--- a/include/linux/of_device.h
+++ b/include/linux/of_device.h
@@ -93,13 +93,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)
{
--
Sent by a computer through tubes


2019-10-18 22:10:15

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH 10/10] of/device: Don't NULLify match table in of_match_device() with CONFIG_OF=n

On 10/04/2019 16:43, Stephen Boyd 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.
>
> Cc: Arnd Bergmann <[email protected]>
> Cc: Geert Uytterhoeven <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: Frank Rowand <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
>
> Please ack or pick for immediate merge so the last patch can be merged.
>
> include/linux/of_device.h | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/include/linux/of_device.h b/include/linux/of_device.h
> index 8d31e39dd564..3f8ca55bc693 100644
> --- a/include/linux/of_device.h
> +++ b/include/linux/of_device.h
> @@ -93,13 +93,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)
> {
>


Acked-by: Frank Rowand <[email protected]>

2019-10-18 22:18:45

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH 10/10] of/device: Don't NULLify match table in of_match_device() with CONFIG_OF=n

On Thu, Oct 17, 2019 at 12:48 PM Frank Rowand <[email protected]> wrote:
>
> On 10/04/2019 16:43, Stephen Boyd 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.
> >
> > Cc: Arnd Bergmann <[email protected]>
> > Cc: Geert Uytterhoeven <[email protected]>
> > Cc: Rob Herring <[email protected]>
> > Cc: Frank Rowand <[email protected]>
> > Signed-off-by: Stephen Boyd <[email protected]>
> > ---
> >
> > Please ack or pick for immediate merge so the last patch can be merged.

As this one is the last patch, I guess you don't want it picked up by itself.

It seems everyone has acked rather than applying. Do you want me to
take the series?

Rob

> >
> > include/linux/of_device.h | 4 +---
> > 1 file changed, 1 insertion(+), 3 deletions(-)
> >
> > diff --git a/include/linux/of_device.h b/include/linux/of_device.h
> > index 8d31e39dd564..3f8ca55bc693 100644
> > --- a/include/linux/of_device.h
> > +++ b/include/linux/of_device.h
> > @@ -93,13 +93,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)
> > {
> >
>
>
> Acked-by: Frank Rowand <[email protected]>

2019-10-18 22:19:37

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 10/10] of/device: Don't NULLify match table in of_match_device() with CONFIG_OF=n

Quoting Rob Herring (2019-10-17 13:24:23)
> On Thu, Oct 17, 2019 at 12:48 PM Frank Rowand <[email protected]> wrote:
> >
> > On 10/04/2019 16:43, Stephen Boyd 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.
> > >
> > > Cc: Arnd Bergmann <[email protected]>
> > > Cc: Geert Uytterhoeven <[email protected]>
> > > Cc: Rob Herring <[email protected]>
> > > Cc: Frank Rowand <[email protected]>
> > > Signed-off-by: Stephen Boyd <[email protected]>
> > > ---
> > >
> > > Please ack or pick for immediate merge so the last patch can be merged.
>
> As this one is the last patch, I guess you don't want it picked up by itself.
>
> It seems everyone has acked rather than applying. Do you want me to
> take the series?
>

It would be great if you could take the series.

Mark applied the ASoC and spi patches. I guess you can try to see if
those merged into mainline and then base on top, or just apply the same
patches on your tree and let the duplicates drop out in the merge path.