[ammarfaizi2-block:google/android/kernel/common/android12-5.10-2021-12 1300/9999] drivers/base/core.c:1542:5: warning: no previous prototype for 'fw_devlink_relax_cycle'

From: kernel test robot
Date: Thu Mar 10 2022 - 01:33:11 EST


Hi Saravana,

FYI, the error/warning still remains.

tree: https://github.com/ammarfaizi2/linux-block google/android/kernel/common/android12-5.10-2021-12
head: 66c74c58ab38fb1f5edb12b8bace4cf5bbad2cfd
commit: 1df699c140a778ed678d7d4b2fa8ffb2c62573e1 [1300/9999] UPSTREAM: driver core: Handle cycles in device links created by fw_devlink
config: i386-tinyconfig (https://download.01.org/0day-ci/archive/20220310/202203101407.4WP0DiPE-lkp@xxxxxxxxx/config)
compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
reproduce (this is a W=1 build):
# https://github.com/ammarfaizi2/linux-block/commit/1df699c140a778ed678d7d4b2fa8ffb2c62573e1
git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
git fetch --no-tags ammarfaizi2-block google/android/kernel/common/android12-5.10-2021-12
git checkout 1df699c140a778ed678d7d4b2fa8ffb2c62573e1
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/base/ kernel/printk/ kernel/sched/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> drivers/base/core.c:1542:5: warning: no previous prototype for 'fw_devlink_relax_cycle' [-Wmissing-prototypes]
1542 | int fw_devlink_relax_cycle(struct device *con, void *sup)
| ^~~~~~~~~~~~~~~~~~~~~~


vim +/fw_devlink_relax_cycle +1542 drivers/base/core.c

1527
1528 /**
1529 * fw_devlink_relax_cycle - Convert cyclic links to SYNC_STATE_ONLY links
1530 * @con: Device to check dependencies for.
1531 * @sup: Device to check against.
1532 *
1533 * Check if @sup depends on @con or any device dependent on it (its child or
1534 * its consumer etc). When such a cyclic dependency is found, convert all
1535 * device links created solely by fw_devlink into SYNC_STATE_ONLY device links.
1536 * This is the equivalent of doing fw_devlink=permissive just between the
1537 * devices in the cycle. We need to do this because, at this point, fw_devlink
1538 * can't tell which of these dependencies is not a real dependency.
1539 *
1540 * Return 1 if a cycle is found. Otherwise, return 0.
1541 */
> 1542 int fw_devlink_relax_cycle(struct device *con, void *sup)
1543 {
1544 struct device_link *link;
1545 int ret;
1546
1547 if (con == sup)
1548 return 1;
1549
1550 ret = device_for_each_child(con, sup, fw_devlink_relax_cycle);
1551 if (ret)
1552 return ret;
1553
1554 list_for_each_entry(link, &con->links.consumers, s_node) {
1555 if ((link->flags & ~DL_FLAG_INFERRED) ==
1556 (DL_FLAG_SYNC_STATE_ONLY | DL_FLAG_MANAGED))
1557 continue;
1558
1559 if (!fw_devlink_relax_cycle(link->consumer, sup))
1560 continue;
1561
1562 ret = 1;
1563
1564 if (!(link->flags & DL_FLAG_INFERRED))
1565 continue;
1566
1567 pm_runtime_drop_link(link);
1568 link->flags = DL_FLAG_MANAGED | FW_DEVLINK_FLAGS_PERMISSIVE;
1569 dev_dbg(link->consumer, "Relaxing link with %s\n",
1570 dev_name(link->supplier));
1571 }
1572 return ret;
1573 }
1574

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx