Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings

From: Andy Shevchenko
Date: Sun Aug 30 2020 - 16:16:00 EST


On Sun, Aug 30, 2020 at 6:25 PM Andrew Lunn <andrew@xxxxxxx> wrote:
>
> On Fri, Aug 28, 2020 at 05:09:52PM -0600, Rob Herring wrote:
> > On Fri, Aug 28, 2020 at 7:00 AM Andrew Lunn <andrew@xxxxxxx> wrote:
> > >
> > > On Fri, Aug 28, 2020 at 04:19:39AM +0200, Andrew Lunn wrote:
> > > > When building without CONFIG_OF and W=1, errors are given about unused
> > > > arrays of match data, because of_match_node is stubbed as a macro. The
> > > > compile does not see it takes parameters when not astub, so it
> > > > generates warnings about unused variables. Replace the stub with an
> > > > inline function to avoid these false warnings.
> > >
> > > Hi Rob
> > >
> > > So 0-day shows some people have worked around this with #ifdef
> > > CONFIG_OF around the match table.
> > >
> > > I checked the object code for the file i'm interested in. The
> > > optimiser has correctly throw away the match table and all code around
> > > it with the inline stub.
> > >
> > > Which do you prefer? This patch and i remove the #ifdef, or the old
> > > stub and if add #ifdef around the driver i'm getting warnings from?
> >
> > Use of_device_get_match_data instead of of_match_node.
> >
>
> Hi Rob
>
> That does not work in the use case i'm interested in, which is giving
> a W=1 warning. Take a look at the last example in
> Documentation/devicetree/bindings/net/dsa/marvell.txt
>
> We have an Ethernet switch, using the compatible string
> "marvell,mv88e6390". Embedded within the hardware, and within the same
> driver, we have two MDIO busses. One is internal, for the PHYs
> integrated into the switch, and one is external, of discrete PHY
> connected to the switch. The external MDIO bus has its own compatible
> string. However, there is no struct driver for it, the switch driver
> is driving the MDIO bus. So of_device_get_match_data() will use the
> wrong match table.

Looks like in that code you may use of_device_is_compatible().

--
With Best Regards,
Andy Shevchenko