Re: [PATCH v3] of_device: removed #include that caused a recursion in included headers

kbuild test robot
2020-04-23T05:28:47Z

[-- Attachment #1: Type: text/plain, Size: 16750 bytes --]

Hi Hadar,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on sparc/master]
[also build test ERROR on stm32/stm32-next linus/master v5.7-rc2 next-20200422]
[cannot apply to sparc-next/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Hadar-Gat/of_device-removed-include-that-caused-a-recursion-in-included-headers/20200423-040844
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc.git master
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

drivers/firmware/ti_sci.c: In function 'ti_sci_probe':
>> drivers/firmware/ti_sci.c:3520:9: error: implicit declaration of function 'of_platform_populate' [-Werror=implicit-function-declaration]
3520 | return of_platform_populate(dev->of_node, NULL, NULL, dev);
| ^~~~~~~~~~~~~~~~~~~~
drivers/firmware/ti_sci.c: In function 'ti_sci_remove':
>> drivers/firmware/ti_sci.c:3536:2: error: implicit declaration of function 'of_platform_depopulate' [-Werror=implicit-function-declaration]
3536 | of_platform_depopulate(dev);
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
drivers/firmware/tegra/bpmp.c: In function 'tegra_bpmp_get':
>> drivers/firmware/tegra/bpmp.c:51:9: error: implicit declaration of function 'of_find_device_by_node'; did you mean 'bus_find_device_by_fwnode'? [-Werror=implicit-function-declaration]
51 | pdev = of_find_device_by_node(np);
| ^~~~~~~~~~~~~~~~~~~~~~
| bus_find_device_by_fwnode
drivers/firmware/tegra/bpmp.c:51:7: warning: assignment to 'struct platform_device *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
51 | pdev = of_find_device_by_node(np);
| ^
drivers/firmware/tegra/bpmp.c: In function 'tegra_bpmp_probe':
>> drivers/firmware/tegra/bpmp.c:759:8: error: implicit declaration of function 'of_platform_default_populate' [-Werror=implicit-function-declaration]
759 | err = of_platform_default_populate(pdev->dev.of_node, NULL, &pdev->dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c: In function 'sun8i_dw_hdmi_find_connector_pdev':
>> drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c:115:9: error: implicit declaration of function 'of_find_device_by_node'; did you mean 'of_find_i2c_device_by_node'? [-Werror=implicit-function-declaration]
115 | pdev = of_find_device_by_node(remote);
| ^~~~~~~~~~~~~~~~~~~~~~
| of_find_i2c_device_by_node
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c:115:7: warning: assignment to 'struct platform_device *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
115 | pdev = of_find_device_by_node(remote);
| ^
cc1: some warnings being treated as errors

vim +/of_platform_populate +3520 drivers/firmware/ti_sci.c

aa276781a64a5f Nishanth Menon 2016-10-18 3385
aa276781a64a5f Nishanth Menon 2016-10-18 3386 static int ti_sci_probe(struct platform_device *pdev)
aa276781a64a5f Nishanth Menon 2016-10-18 3387 {
aa276781a64a5f Nishanth Menon 2016-10-18 3388 struct device *dev = &pdev->dev;
aa276781a64a5f Nishanth Menon 2016-10-18 3389 const struct of_device_id *of_id;
aa276781a64a5f Nishanth Menon 2016-10-18 3390 const struct ti_sci_desc *desc;
aa276781a64a5f Nishanth Menon 2016-10-18 3391 struct ti_sci_xfer *xfer;
aa276781a64a5f Nishanth Menon 2016-10-18 3392 struct ti_sci_info *info = NULL;
aa276781a64a5f Nishanth Menon 2016-10-18 3393 struct ti_sci_xfers_info *minfo;
aa276781a64a5f Nishanth Menon 2016-10-18 3394 struct mbox_client *cl;
aa276781a64a5f Nishanth Menon 2016-10-18 3395 int ret = -EINVAL;
aa276781a64a5f Nishanth Menon 2016-10-18 3396 int i;
912cffb4ed8612 Nishanth Menon 2016-10-18 3397 int reboot = 0;
e69a35531589a2 Nishanth Menon 2018-08-28 3398 u32 h_id;
aa276781a64a5f Nishanth Menon 2016-10-18 3399
aa276781a64a5f Nishanth Menon 2016-10-18 3400 of_id = of_match_device(ti_sci_of_match, dev);
aa276781a64a5f Nishanth Menon 2016-10-18 3401 if (!of_id) {
aa276781a64a5f Nishanth Menon 2016-10-18 3402 dev_err(dev, "OF data missing\n");
aa276781a64a5f Nishanth Menon 2016-10-18 3403 return -EINVAL;
aa276781a64a5f Nishanth Menon 2016-10-18 3404 }
aa276781a64a5f Nishanth Menon 2016-10-18 3405 desc = of_id->data;
aa276781a64a5f Nishanth Menon 2016-10-18 3406
aa276781a64a5f Nishanth Menon 2016-10-18 3407 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
aa276781a64a5f Nishanth Menon 2016-10-18 3408 if (!info)
aa276781a64a5f Nishanth Menon 2016-10-18 3409 return -ENOMEM;
aa276781a64a5f Nishanth Menon 2016-10-18 3410
aa276781a64a5f Nishanth Menon 2016-10-18 3411 info->dev = dev;
aa276781a64a5f Nishanth Menon 2016-10-18 3412 info->desc = desc;
e69a35531589a2 Nishanth Menon 2018-08-28 3413 ret = of_property_read_u32(dev->of_node, "ti,host-id", &h_id);
e69a35531589a2 Nishanth Menon 2018-08-28 3414 /* if the property is not present in DT, use a default from desc */
e69a35531589a2 Nishanth Menon 2018-08-28 3415 if (ret < 0) {
e69a35531589a2 Nishanth Menon 2018-08-28 3416 info->host_id = info->desc->default_host_id;
e69a35531589a2 Nishanth Menon 2018-08-28 3417 } else {
e69a35531589a2 Nishanth Menon 2018-08-28 3418 if (!h_id) {
e69a35531589a2 Nishanth Menon 2018-08-28 3419 dev_warn(dev, "Host ID 0 is reserved for firmware\n");
e69a35531589a2 Nishanth Menon 2018-08-28 3420 info->host_id = info->desc->default_host_id;
e69a35531589a2 Nishanth Menon 2018-08-28 3421 } else {
e69a35531589a2 Nishanth Menon 2018-08-28 3422 info->host_id = h_id;
e69a35531589a2 Nishanth Menon 2018-08-28 3423 }
e69a35531589a2 Nishanth Menon 2018-08-28 3424 }
e69a35531589a2 Nishanth Menon 2018-08-28 3425
912cffb4ed8612 Nishanth Menon 2016-10-18 3426 reboot = of_property_read_bool(dev->of_node,
912cffb4ed8612 Nishanth Menon 2016-10-18 3427 "ti,system-reboot-controller");
aa276781a64a5f Nishanth Menon 2016-10-18 3428 INIT_LIST_HEAD(&info->node);
aa276781a64a5f Nishanth Menon 2016-10-18 3429 minfo = &info->minfo;
aa276781a64a5f Nishanth Menon 2016-10-18 3430
aa276781a64a5f Nishanth Menon 2016-10-18 3431 /*
aa276781a64a5f Nishanth Menon 2016-10-18 3432 * Pre-allocate messages
aa276781a64a5f Nishanth Menon 2016-10-18 3433 * NEVER allocate more than what we can indicate in hdr.seq
aa276781a64a5f Nishanth Menon 2016-10-18 3434 * if we have data description bug, force a fix..
aa276781a64a5f Nishanth Menon 2016-10-18 3435 */
aa276781a64a5f Nishanth Menon 2016-10-18 3436 if (WARN_ON(desc->max_msgs >=
aa276781a64a5f Nishanth Menon 2016-10-18 3437 1 << 8 * sizeof(((struct ti_sci_msg_hdr *)0)->seq)))
aa276781a64a5f Nishanth Menon 2016-10-18 3438 return -EINVAL;
aa276781a64a5f Nishanth Menon 2016-10-18 3439
aa276781a64a5f Nishanth Menon 2016-10-18 3440 minfo->xfer_block = devm_kcalloc(dev,
aa276781a64a5f Nishanth Menon 2016-10-18 3441 desc->max_msgs,
aa276781a64a5f Nishanth Menon 2016-10-18 3442 sizeof(*minfo->xfer_block),
aa276781a64a5f Nishanth Menon 2016-10-18 3443 GFP_KERNEL);
aa276781a64a5f Nishanth Menon 2016-10-18 3444 if (!minfo->xfer_block)
aa276781a64a5f Nishanth Menon 2016-10-18 3445 return -ENOMEM;
aa276781a64a5f Nishanth Menon 2016-10-18 3446
a86854d0c599b3 Kees Cook 2018-06-12 3447 minfo->xfer_alloc_table = devm_kcalloc(dev,
a86854d0c599b3 Kees Cook 2018-06-12 3448 BITS_TO_LONGS(desc->max_msgs),
a86854d0c599b3 Kees Cook 2018-06-12 3449 sizeof(unsigned long),
aa276781a64a5f Nishanth Menon 2016-10-18 3450 GFP_KERNEL);
aa276781a64a5f Nishanth Menon 2016-10-18 3451 if (!minfo->xfer_alloc_table)
aa276781a64a5f Nishanth Menon 2016-10-18 3452 return -ENOMEM;
aa276781a64a5f Nishanth Menon 2016-10-18 3453 bitmap_zero(minfo->xfer_alloc_table, desc->max_msgs);
aa276781a64a5f Nishanth Menon 2016-10-18 3454
aa276781a64a5f Nishanth Menon 2016-10-18 3455 /* Pre-initialize the buffer pointer to pre-allocated buffers */
aa276781a64a5f Nishanth Menon 2016-10-18 3456 for (i = 0, xfer = minfo->xfer_block; i < desc->max_msgs; i++, xfer++) {
aa276781a64a5f Nishanth Menon 2016-10-18 3457 xfer->xfer_buf = devm_kcalloc(dev, 1, desc->max_msg_size,
aa276781a64a5f Nishanth Menon 2016-10-18 3458 GFP_KERNEL);
aa276781a64a5f Nishanth Menon 2016-10-18 3459 if (!xfer->xfer_buf)
aa276781a64a5f Nishanth Menon 2016-10-18 3460 return -ENOMEM;
aa276781a64a5f Nishanth Menon 2016-10-18 3461
aa276781a64a5f Nishanth Menon 2016-10-18 3462 xfer->tx_message.buf = xfer->xfer_buf;
aa276781a64a5f Nishanth Menon 2016-10-18 3463 init_completion(&xfer->done);
aa276781a64a5f Nishanth Menon 2016-10-18 3464 }
aa276781a64a5f Nishanth Menon 2016-10-18 3465
aa276781a64a5f Nishanth Menon 2016-10-18 3466 ret = ti_sci_debugfs_create(pdev, info);
aa276781a64a5f Nishanth Menon 2016-10-18 3467 if (ret)
aa276781a64a5f Nishanth Menon 2016-10-18 3468 dev_warn(dev, "Failed to create debug file\n");
aa276781a64a5f Nishanth Menon 2016-10-18 3469
aa276781a64a5f Nishanth Menon 2016-10-18 3470 platform_set_drvdata(pdev, info);
aa276781a64a5f Nishanth Menon 2016-10-18 3471
aa276781a64a5f Nishanth Menon 2016-10-18 3472 cl = &info->cl;
aa276781a64a5f Nishanth Menon 2016-10-18 3473 cl->dev = dev;
aa276781a64a5f Nishanth Menon 2016-10-18 3474 cl->tx_block = false;
aa276781a64a5f Nishanth Menon 2016-10-18 3475 cl->rx_callback = ti_sci_rx_callback;
aa276781a64a5f Nishanth Menon 2016-10-18 3476 cl->knows_txdone = true;
aa276781a64a5f Nishanth Menon 2016-10-18 3477
aa276781a64a5f Nishanth Menon 2016-10-18 3478 spin_lock_init(&minfo->xfer_lock);
aa276781a64a5f Nishanth Menon 2016-10-18 3479 sema_init(&minfo->sem_xfer_count, desc->max_msgs);
aa276781a64a5f Nishanth Menon 2016-10-18 3480
aa276781a64a5f Nishanth Menon 2016-10-18 3481 info->chan_rx = mbox_request_channel_byname(cl, "rx");
aa276781a64a5f Nishanth Menon 2016-10-18 3482 if (IS_ERR(info->chan_rx)) {
aa276781a64a5f Nishanth Menon 2016-10-18 3483 ret = PTR_ERR(info->chan_rx);
aa276781a64a5f Nishanth Menon 2016-10-18 3484 goto out;
aa276781a64a5f Nishanth Menon 2016-10-18 3485 }
aa276781a64a5f Nishanth Menon 2016-10-18 3486
aa276781a64a5f Nishanth Menon 2016-10-18 3487 info->chan_tx = mbox_request_channel_byname(cl, "tx");
aa276781a64a5f Nishanth Menon 2016-10-18 3488 if (IS_ERR(info->chan_tx)) {
aa276781a64a5f Nishanth Menon 2016-10-18 3489 ret = PTR_ERR(info->chan_tx);
aa276781a64a5f Nishanth Menon 2016-10-18 3490 goto out;
aa276781a64a5f Nishanth Menon 2016-10-18 3491 }
aa276781a64a5f Nishanth Menon 2016-10-18 3492 ret = ti_sci_cmd_get_revision(info);
aa276781a64a5f Nishanth Menon 2016-10-18 3493 if (ret) {
aa276781a64a5f Nishanth Menon 2016-10-18 3494 dev_err(dev, "Unable to communicate with TISCI(%d)\n", ret);
aa276781a64a5f Nishanth Menon 2016-10-18 3495 goto out;
aa276781a64a5f Nishanth Menon 2016-10-18 3496 }
aa276781a64a5f Nishanth Menon 2016-10-18 3497
9e7d756da7a5b0 Nishanth Menon 2016-10-18 3498 ti_sci_setup_ops(info);
9e7d756da7a5b0 Nishanth Menon 2016-10-18 3499
912cffb4ed8612 Nishanth Menon 2016-10-18 3500 if (reboot) {
912cffb4ed8612 Nishanth Menon 2016-10-18 3501 info->nb.notifier_call = tisci_reboot_handler;
912cffb4ed8612 Nishanth Menon 2016-10-18 3502 info->nb.priority = 128;
912cffb4ed8612 Nishanth Menon 2016-10-18 3503
912cffb4ed8612 Nishanth Menon 2016-10-18 3504 ret = register_restart_handler(&info->nb);
912cffb4ed8612 Nishanth Menon 2016-10-18 3505 if (ret) {
912cffb4ed8612 Nishanth Menon 2016-10-18 3506 dev_err(dev, "reboot registration fail(%d)\n", ret);
912cffb4ed8612 Nishanth Menon 2016-10-18 3507 return ret;
912cffb4ed8612 Nishanth Menon 2016-10-18 3508 }
912cffb4ed8612 Nishanth Menon 2016-10-18 3509 }
912cffb4ed8612 Nishanth Menon 2016-10-18 3510
aa276781a64a5f Nishanth Menon 2016-10-18 3511 dev_info(dev, "ABI: %d.%d (firmware rev 0x%04x '%s')\n",
aa276781a64a5f Nishanth Menon 2016-10-18 3512 info->handle.version.abi_major, info->handle.version.abi_minor,
aa276781a64a5f Nishanth Menon 2016-10-18 3513 info->handle.version.firmware_revision,
aa276781a64a5f Nishanth Menon 2016-10-18 3514 info->handle.version.firmware_description);
aa276781a64a5f Nishanth Menon 2016-10-18 3515
aa276781a64a5f Nishanth Menon 2016-10-18 3516 mutex_lock(&ti_sci_list_mutex);
aa276781a64a5f Nishanth Menon 2016-10-18 3517 list_add_tail(&info->node, &ti_sci_list);
aa276781a64a5f Nishanth Menon 2016-10-18 3518 mutex_unlock(&ti_sci_list_mutex);
aa276781a64a5f Nishanth Menon 2016-10-18 3519
aa276781a64a5f Nishanth Menon 2016-10-18 @3520 return of_platform_populate(dev->of_node, NULL, NULL, dev);
aa276781a64a5f Nishanth Menon 2016-10-18 3521 out:
aa276781a64a5f Nishanth Menon 2016-10-18 3522 if (!IS_ERR(info->chan_tx))
aa276781a64a5f Nishanth Menon 2016-10-18 3523 mbox_free_channel(info->chan_tx);
aa276781a64a5f Nishanth Menon 2016-10-18 3524 if (!IS_ERR(info->chan_rx))
aa276781a64a5f Nishanth Menon 2016-10-18 3525 mbox_free_channel(info->chan_rx);
aa276781a64a5f Nishanth Menon 2016-10-18 3526 debugfs_remove(info->d);
aa276781a64a5f Nishanth Menon 2016-10-18 3527 return ret;
aa276781a64a5f Nishanth Menon 2016-10-18 3528 }
aa276781a64a5f Nishanth Menon 2016-10-18 3529
aa276781a64a5f Nishanth Menon 2016-10-18 3530 static int ti_sci_remove(struct platform_device *pdev)
aa276781a64a5f Nishanth Menon 2016-10-18 3531 {
aa276781a64a5f Nishanth Menon 2016-10-18 3532 struct ti_sci_info *info;
aa276781a64a5f Nishanth Menon 2016-10-18 3533 struct device *dev = &pdev->dev;
aa276781a64a5f Nishanth Menon 2016-10-18 3534 int ret = 0;
aa276781a64a5f Nishanth Menon 2016-10-18 3535
aa276781a64a5f Nishanth Menon 2016-10-18 @3536 of_platform_depopulate(dev);
aa276781a64a5f Nishanth Menon 2016-10-18 3537
aa276781a64a5f Nishanth Menon 2016-10-18 3538 info = platform_get_drvdata(pdev);
aa276781a64a5f Nishanth Menon 2016-10-18 3539
912cffb4ed8612 Nishanth Menon 2016-10-18 3540 if (info->nb.notifier_call)
912cffb4ed8612 Nishanth Menon 2016-10-18 3541 unregister_restart_handler(&info->nb);
912cffb4ed8612 Nishanth Menon 2016-10-18 3542
aa276781a64a5f Nishanth Menon 2016-10-18 3543 mutex_lock(&ti_sci_list_mutex);
aa276781a64a5f Nishanth Menon 2016-10-18 3544 if (info->users)
aa276781a64a5f Nishanth Menon 2016-10-18 3545 ret = -EBUSY;
aa276781a64a5f Nishanth Menon 2016-10-18 3546 else
aa276781a64a5f Nishanth Menon 2016-10-18 3547 list_del(&info->node);
aa276781a64a5f Nishanth Menon 2016-10-18 3548 mutex_unlock(&ti_sci_list_mutex);
aa276781a64a5f Nishanth Menon 2016-10-18 3549
aa276781a64a5f Nishanth Menon 2016-10-18 3550 if (!ret) {
aa276781a64a5f Nishanth Menon 2016-10-18 3551 ti_sci_debugfs_destroy(pdev, info);
aa276781a64a5f Nishanth Menon 2016-10-18 3552
aa276781a64a5f Nishanth Menon 2016-10-18 3553 /* Safe to free channels since no more users */
aa276781a64a5f Nishanth Menon 2016-10-18 3554 mbox_free_channel(info->chan_tx);
aa276781a64a5f Nishanth Menon 2016-10-18 3555 mbox_free_channel(info->chan_rx);
aa276781a64a5f Nishanth Menon 2016-10-18 3556 }
aa276781a64a5f Nishanth Menon 2016-10-18 3557
aa276781a64a5f Nishanth Menon 2016-10-18 3558 return ret;
aa276781a64a5f Nishanth Menon 2016-10-18 3559 }
aa276781a64a5f Nishanth Menon 2016-10-18 3560

:::::: The code at line 3520 was first introduced by commit
:::::: aa276781a64a5f15ecc21e920960c5b1f84e5fee firmware: Add basic support for TI System Control Interface (TI-SCI) protocol

:::::: TO: Nishanth Menon <nm@ti.com>
:::::: CC: Tero Kristo <t-kristo@ti.com>

---
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: 48658 bytes --]

[-- Attachment #3: Type: text/plain, Size: 156 bytes --]