Re: [PATCH] soc: xilinx: Use of_property_present() for testing DT property presence

From: kernel test robot
Date: Sat Mar 11 2023 - 11:16:05 EST


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