Hi Rob, I love your patch! Yet something to improve: [auto build test ERROR on xilinx-xlnx/master] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Rob-Herring/soc-xilinx-Use-of_property_present-for-testing-DT-property-presence/20230310-225437 base: https://github.com/Xilinx/linux-xlnx master patch link: https://lore.kernel.org/r/20230310144725.1545315-1-robh%40kernel.org patch subject: [PATCH] soc: xilinx: Use of_property_present() for testing DT property presence config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20230312/202303120017.BIw01Y21-lkp@xxxxxxxxx/config) compiler: aarch64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/7d21b118deba11d338baf0365e962a8889f3ac68 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Rob-Herring/soc-xilinx-Use-of_property_present-for-testing-DT-property-presence/20230310-225437 git checkout 7d21b118deba11d338baf0365e962a8889f3ac68 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/soc/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202303120017.BIw01Y21-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/soc/xilinx/zynqmp_power.c: In function 'zynqmp_pm_probe': >> drivers/soc/xilinx/zynqmp_power.c:221:20: error: implicit declaration of function 'of_property_present'; did you mean 'fwnode_property_present'? [-Werror=implicit-function-declaration] 221 | } else if (of_property_present(pdev->dev.of_node, "mboxes")) { | ^~~~~~~~~~~~~~~~~~~ | fwnode_property_present cc1: some warnings being treated as errors vim +221 drivers/soc/xilinx/zynqmp_power.c 183 184 static int zynqmp_pm_probe(struct platform_device *pdev) 185 { 186 int ret, irq; 187 u32 pm_api_version; 188 struct mbox_client *client; 189 190 zynqmp_pm_get_api_version(&pm_api_version); 191 192 /* Check PM API version number */ 193 if (pm_api_version < ZYNQMP_PM_VERSION) 194 return -ENODEV; 195 196 /* 197 * First try to use Xilinx Event Manager by registering suspend_event_callback 198 * for suspend/shutdown event. 199 * If xlnx_register_event() returns -EACCES (Xilinx Event Manager 200 * is not available to use) or -ENODEV(Xilinx Event Manager not compiled), 201 * then use ipi-mailbox or interrupt method. 202 */ 203 ret = xlnx_register_event(PM_INIT_SUSPEND_CB, 0, 0, false, 204 suspend_event_callback, NULL); 205 if (!ret) { 206 zynqmp_pm_init_suspend_work = devm_kzalloc(&pdev->dev, 207 sizeof(struct zynqmp_pm_work_struct), 208 GFP_KERNEL); 209 if (!zynqmp_pm_init_suspend_work) { 210 xlnx_unregister_event(PM_INIT_SUSPEND_CB, 0, 0, 211 suspend_event_callback, NULL); 212 return -ENOMEM; 213 } 214 event_registered = true; 215 216 INIT_WORK(&zynqmp_pm_init_suspend_work->callback_work, 217 zynqmp_pm_init_suspend_work_fn); 218 } else if (ret != -EACCES && ret != -ENODEV) { 219 dev_err(&pdev->dev, "Failed to Register with Xilinx Event manager %d\n", ret); 220 return ret; > 221 } else if (of_property_present(pdev->dev.of_node, "mboxes")) { 222 zynqmp_pm_init_suspend_work = 223 devm_kzalloc(&pdev->dev, 224 sizeof(struct zynqmp_pm_work_struct), 225 GFP_KERNEL); 226 if (!zynqmp_pm_init_suspend_work) 227 return -ENOMEM; 228 229 INIT_WORK(&zynqmp_pm_init_suspend_work->callback_work, 230 zynqmp_pm_init_suspend_work_fn); 231 client = devm_kzalloc(&pdev->dev, sizeof(*client), GFP_KERNEL); 232 if (!client) 233 return -ENOMEM; 234 235 client->dev = &pdev->dev; 236 client->rx_callback = ipi_receive_callback; 237 238 rx_chan = mbox_request_channel_byname(client, "rx"); 239 if (IS_ERR(rx_chan)) { 240 dev_err(&pdev->dev, "Failed to request rx channel\n"); 241 return PTR_ERR(rx_chan); 242 } 243 } else if (of_property_present(pdev->dev.of_node, "interrupts")) { 244 irq = platform_get_irq(pdev, 0); 245 if (irq <= 0) 246 return -ENXIO; 247 248 ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, 249 zynqmp_pm_isr, 250 IRQF_NO_SUSPEND | IRQF_ONESHOT, 251 dev_name(&pdev->dev), 252 &pdev->dev); 253 if (ret) { 254 dev_err(&pdev->dev, "devm_request_threaded_irq '%d' failed with %d\n", 255 irq, ret); 256 return ret; 257 } 258 } else { 259 dev_err(&pdev->dev, "Required property not found in DT node\n"); 260 return -ENOENT; 261 } 262 263 ret = sysfs_create_file(&pdev->dev.kobj, &dev_attr_suspend_mode.attr); 264 if (ret) { 265 if (event_registered) { 266 xlnx_unregister_event(PM_INIT_SUSPEND_CB, 0, 0, suspend_event_callback, 267 NULL); 268 event_registered = false; 269 } 270 dev_err(&pdev->dev, "unable to create sysfs interface\n"); 271 return ret; 272 } 273 274 return 0; 275 } 276 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests