* [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings
@ 2020-08-28 2:19 Andrew Lunn
2020-08-28 10:52 ` kernel test robot
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Andrew Lunn @ 2020-08-28 2:19 UTC (permalink / raw)
To: robh+dt; +Cc: devicetree, linux-kernel, Andrew Lunn
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.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
include/linux/of.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/linux/of.h b/include/linux/of.h
index 5cf7ae0465d1..e9838387e7d9 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -991,7 +991,12 @@ static inline int of_map_id(struct device_node *np, u32 id,
}
#define of_match_ptr(_ptr) NULL
-#define of_match_node(_matches, _node) NULL
+
+static inline const struct of_device_id *of_match_node(
+ const struct of_device_id *matches, const struct device_node *node)
+{
+ return NULL;
+}
#endif /* CONFIG_OF */
/* Default string compare functions, Allow arch asm/prom.h to override */
--
2.28.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-28 2:19 [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings Andrew Lunn @ 2020-08-28 10:52 ` kernel test robot 2020-08-28 11:05 ` kernel test robot 2020-08-28 13:00 ` Andrew Lunn 2 siblings, 0 replies; 7+ messages in thread From: kernel test robot @ 2020-08-28 10:52 UTC (permalink / raw) To: Andrew Lunn, robh+dt; +Cc: kbuild-all, devicetree, linux-kernel, Andrew Lunn [-- Attachment #1: Type: text/plain, Size: 3670 bytes --] Hi Andrew, I love your patch! Yet something to improve: [auto build test ERROR on robh/for-next] [also build test ERROR on linux/master linus/master v5.9-rc2 next-20200828] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Andrew-Lunn/of-of_match_node-Make-stub-an-inline-function-to-avoid-W-1-warnings/20200828-102035 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: i386-randconfig-a006-20200828 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/misc/atmel-ssc.c: In function 'atmel_ssc_get_driver_data': >> drivers/misc/atmel-ssc.c:137:25: error: 'atmel_ssc_dt_ids' undeclared (first use in this function); did you mean 'atmel_ssc_devtypes'? 137 | match = of_match_node(atmel_ssc_dt_ids, pdev->dev.of_node); | ^~~~~~~~~~~~~~~~ | atmel_ssc_devtypes drivers/misc/atmel-ssc.c:137:25: note: each undeclared identifier is reported only once for each function it appears in -- drivers/i2c/busses/i2c-s3c2410.c: In function 's3c24xx_get_device_quirks': >> drivers/i2c/busses/i2c-s3c2410.c:162:25: error: 's3c24xx_i2c_match' undeclared (first use in this function); did you mean 's3c24xx_i2c_state'? 162 | match = of_match_node(s3c24xx_i2c_match, pdev->dev.of_node); | ^~~~~~~~~~~~~~~~~ | s3c24xx_i2c_state drivers/i2c/busses/i2c-s3c2410.c:162:25: note: each undeclared identifier is reported only once for each function it appears in # https://github.com/0day-ci/linux/commit/3213d0cc82c7a4e0e85e0db3da3da279460c833b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Andrew-Lunn/of-of_match_node-Make-stub-an-inline-function-to-avoid-W-1-warnings/20200828-102035 git checkout 3213d0cc82c7a4e0e85e0db3da3da279460c833b vim +137 drivers/misc/atmel-ssc.c 099343c64e1615 Bo Shen 2012-11-07 131 7c97301285b62a Nathan Chancellor 2018-10-17 132 static inline const struct atmel_ssc_platform_data * 099343c64e1615 Bo Shen 2012-11-07 133 atmel_ssc_get_driver_data(struct platform_device *pdev) 099343c64e1615 Bo Shen 2012-11-07 134 { 099343c64e1615 Bo Shen 2012-11-07 135 if (pdev->dev.of_node) { 099343c64e1615 Bo Shen 2012-11-07 136 const struct of_device_id *match; 099343c64e1615 Bo Shen 2012-11-07 @137 match = of_match_node(atmel_ssc_dt_ids, pdev->dev.of_node); 099343c64e1615 Bo Shen 2012-11-07 138 if (match == NULL) 099343c64e1615 Bo Shen 2012-11-07 139 return NULL; 099343c64e1615 Bo Shen 2012-11-07 140 return match->data; 099343c64e1615 Bo Shen 2012-11-07 141 } 099343c64e1615 Bo Shen 2012-11-07 142 099343c64e1615 Bo Shen 2012-11-07 143 return (struct atmel_ssc_platform_data *) 099343c64e1615 Bo Shen 2012-11-07 144 platform_get_device_id(pdev)->driver_data; 099343c64e1615 Bo Shen 2012-11-07 145 } 099343c64e1615 Bo Shen 2012-11-07 146 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 36873 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-28 2:19 [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings Andrew Lunn 2020-08-28 10:52 ` kernel test robot @ 2020-08-28 11:05 ` kernel test robot 2020-08-28 13:00 ` Andrew Lunn 2 siblings, 0 replies; 7+ messages in thread From: kernel test robot @ 2020-08-28 11:05 UTC (permalink / raw) To: Andrew Lunn, robh+dt; +Cc: kbuild-all, devicetree, linux-kernel, Andrew Lunn [-- Attachment #1: Type: text/plain, Size: 2768 bytes --] Hi Andrew, I love your patch! Yet something to improve: [auto build test ERROR on robh/for-next] [also build test ERROR on linux/master linus/master v5.9-rc2 next-20200828] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Andrew-Lunn/of-of_match_node-Make-stub-an-inline-function-to-avoid-W-1-warnings/20200828-102035 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: i386-randconfig-r032-20200828 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/mfd/max8998.c: In function 'max8998_i2c_get_driver_data': >> drivers/mfd/max8998.c:160:25: error: 'max8998_dt_match' undeclared (first use in this function) 160 | match = of_match_node(max8998_dt_match, i2c->dev.of_node); | ^~~~~~~~~~~~~~~~ drivers/mfd/max8998.c:160:25: note: each undeclared identifier is reported only once for each function it appears in # https://github.com/0day-ci/linux/commit/3213d0cc82c7a4e0e85e0db3da3da279460c833b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Andrew-Lunn/of-of_match_node-Make-stub-an-inline-function-to-avoid-W-1-warnings/20200828-102035 git checkout 3213d0cc82c7a4e0e85e0db3da3da279460c833b vim +/max8998_dt_match +160 drivers/mfd/max8998.c ee999fb3f17faa Tomasz Figa 2013-06-25 154 8bace2d5b4baa0 Lee Jones 2014-02-03 155 static inline unsigned long max8998_i2c_get_driver_data(struct i2c_client *i2c, ee999fb3f17faa Tomasz Figa 2013-06-25 156 const struct i2c_device_id *id) ee999fb3f17faa Tomasz Figa 2013-06-25 157 { ee999fb3f17faa Tomasz Figa 2013-06-25 158 if (IS_ENABLED(CONFIG_OF) && i2c->dev.of_node) { ee999fb3f17faa Tomasz Figa 2013-06-25 159 const struct of_device_id *match; ee999fb3f17faa Tomasz Figa 2013-06-25 @160 match = of_match_node(max8998_dt_match, i2c->dev.of_node); 8bace2d5b4baa0 Lee Jones 2014-02-03 161 return (unsigned long)match->data; ee999fb3f17faa Tomasz Figa 2013-06-25 162 } ee999fb3f17faa Tomasz Figa 2013-06-25 163 8bace2d5b4baa0 Lee Jones 2014-02-03 164 return id->driver_data; ee999fb3f17faa Tomasz Figa 2013-06-25 165 } ee999fb3f17faa Tomasz Figa 2013-06-25 166 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 28590 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-28 2:19 [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings Andrew Lunn 2020-08-28 10:52 ` kernel test robot 2020-08-28 11:05 ` kernel test robot @ 2020-08-28 13:00 ` Andrew Lunn 2020-08-28 23:09 ` Rob Herring 2 siblings, 1 reply; 7+ messages in thread From: Andrew Lunn @ 2020-08-28 13:00 UTC (permalink / raw) To: robh+dt; +Cc: devicetree, linux-kernel 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? Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-28 13:00 ` Andrew Lunn @ 2020-08-28 23:09 ` Rob Herring 2020-08-30 15:23 ` Andrew Lunn 0 siblings, 1 reply; 7+ messages in thread From: Rob Herring @ 2020-08-28 23:09 UTC (permalink / raw) To: Andrew Lunn; +Cc: devicetree, linux-kernel@vger.kernel.org On Fri, Aug 28, 2020 at 7:00 AM Andrew Lunn <andrew@lunn.ch> 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. Rob ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-28 23:09 ` Rob Herring @ 2020-08-30 15:23 ` Andrew Lunn 2020-08-30 20:15 ` Andy Shevchenko 0 siblings, 1 reply; 7+ messages in thread From: Andrew Lunn @ 2020-08-30 15:23 UTC (permalink / raw) To: Rob Herring; +Cc: devicetree, linux-kernel@vger.kernel.org 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@lunn.ch> 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. Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings 2020-08-30 15:23 ` Andrew Lunn @ 2020-08-30 20:15 ` Andy Shevchenko 0 siblings, 0 replies; 7+ messages in thread From: Andy Shevchenko @ 2020-08-30 20:15 UTC (permalink / raw) To: Andrew Lunn; +Cc: Rob Herring, devicetree, linux-kernel@vger.kernel.org On Sun, Aug 30, 2020 at 6:25 PM Andrew Lunn <andrew@lunn.ch> 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@lunn.ch> 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-08-30 20:15 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-08-28 2:19 [PATCH] of: of_match_node: Make stub an inline function to avoid W=1 warnings Andrew Lunn 2020-08-28 10:52 ` kernel test robot 2020-08-28 11:05 ` kernel test robot 2020-08-28 13:00 ` Andrew Lunn 2020-08-28 23:09 ` Rob Herring 2020-08-30 15:23 ` Andrew Lunn 2020-08-30 20:15 ` Andy Shevchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).