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

kernel test robot lkp at intel.com
Sat Mar 11 08:15:44 PST 2023


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@intel.com/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 at intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303120017.BIw01Y21-lkp@intel.com/

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



More information about the linux-arm-kernel mailing list