* [android-common:android15-6.6 0/1] drivers/base/core.c:1941: warning: Function parameter or member 'con_handle' not described in '__fw_devlink_relax_cycles'
@ 2026-10-25 3:04 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-10-25 3:04 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
Hi Saravana,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android15-6.6
head: 745990bb615d19fb450877b6eb7050f085318f42
commit: f3ae93e738dbce362809662da7ac99c7297ee00c [0/1] driver core: fw_devlink: Stop trying to optimize cycle detection logic
config: i386-buildonly-randconfig-1002-20261020 (https://download.01.org/0day-ci/archive/20261025/202610251023.v7Vd0Gut-lkp@intel.com/config)
compiler: clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261025/202610251023.v7Vd0Gut-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610251023.v7Vd0Gut-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/base/core.c:68: warning: Function parameter or member 'flags' not described in '__fwnode_link_add'
>> drivers/base/core.c:1941: warning: Function parameter or member 'con_handle' not described in '__fw_devlink_relax_cycles'
drivers/base/core.c:1941: warning: Excess function parameter 'con' description in '__fw_devlink_relax_cycles'
vim +1941 drivers/base/core.c
411c0d58ca6faa Saravana Kannan 2023-02-06 1918
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1919 /**
3fb16866b51ded Saravana Kannan 2023-02-06 1920 * __fw_devlink_relax_cycles - Relax and mark dependency cycles.
3fb16866b51ded Saravana Kannan 2023-02-06 1921 * @con: Potential consumer device.
3fb16866b51ded Saravana Kannan 2023-02-06 1922 * @sup_handle: Potential supplier's fwnode.
3fb16866b51ded Saravana Kannan 2023-02-06 1923 *
3fb16866b51ded Saravana Kannan 2023-02-06 1924 * Needs to be called with fwnode_lock and device link lock held.
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1925 *
3fb16866b51ded Saravana Kannan 2023-02-06 1926 * Check if @sup_handle or any of its ancestors or suppliers direct/indirectly
3fb16866b51ded Saravana Kannan 2023-02-06 1927 * depend on @con. This function can detect multiple cyles between @sup_handle
3fb16866b51ded Saravana Kannan 2023-02-06 1928 * and @con. When such dependency cycles are found, convert all device links
3fb16866b51ded Saravana Kannan 2023-02-06 1929 * created solely by fw_devlink into SYNC_STATE_ONLY device links. Also, mark
3fb16866b51ded Saravana Kannan 2023-02-06 1930 * all fwnode links in the cycle with FWLINK_FLAG_CYCLE so that when they are
3fb16866b51ded Saravana Kannan 2023-02-06 1931 * converted into a device link in the future, they are created as
3fb16866b51ded Saravana Kannan 2023-02-06 1932 * SYNC_STATE_ONLY device links. This is the equivalent of doing
3fb16866b51ded Saravana Kannan 2023-02-06 1933 * fw_devlink=permissive just between the devices in the cycle. We need to do
3fb16866b51ded Saravana Kannan 2023-02-06 1934 * this because, at this point, fw_devlink can't tell which of these
3fb16866b51ded Saravana Kannan 2023-02-06 1935 * dependencies is not a real dependency.
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1936 *
3fb16866b51ded Saravana Kannan 2023-02-06 1937 * Return true if one or more cycles were found. Otherwise, return false.
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1938 */
f3ae93e738dbce Saravana Kannan 2024-10-30 1939 static bool __fw_devlink_relax_cycles(struct fwnode_handle *con_handle,
3fb16866b51ded Saravana Kannan 2023-02-06 1940 struct fwnode_handle *sup_handle)
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 @1941 {
f3ae93e738dbce Saravana Kannan 2024-10-30 1942 struct device *sup_dev = NULL, *par_dev = NULL, *con_dev = NULL;
3fb16866b51ded Saravana Kannan 2023-02-06 1943 struct fwnode_link *link;
3fb16866b51ded Saravana Kannan 2023-02-06 1944 struct device_link *dev_link;
3fb16866b51ded Saravana Kannan 2023-02-06 1945 bool ret = false;
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1946
3fb16866b51ded Saravana Kannan 2023-02-06 1947 if (!sup_handle)
3fb16866b51ded Saravana Kannan 2023-02-06 1948 return false;
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1949
3fb16866b51ded Saravana Kannan 2023-02-06 1950 /*
3fb16866b51ded Saravana Kannan 2023-02-06 1951 * We aren't trying to find all cycles. Just a cycle between con and
3fb16866b51ded Saravana Kannan 2023-02-06 1952 * sup_handle.
3fb16866b51ded Saravana Kannan 2023-02-06 1953 */
3fb16866b51ded Saravana Kannan 2023-02-06 1954 if (sup_handle->flags & FWNODE_FLAG_VISITED)
3fb16866b51ded Saravana Kannan 2023-02-06 1955 return false;
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1956
3fb16866b51ded Saravana Kannan 2023-02-06 1957 sup_handle->flags |= FWNODE_FLAG_VISITED;
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1958
3fb16866b51ded Saravana Kannan 2023-02-06 1959 /* Termination condition. */
f3ae93e738dbce Saravana Kannan 2024-10-30 1960 if (sup_handle == con_handle) {
5c764791fb7b81 Saravana Kannan 2024-02-02 1961 pr_debug("----- cycle: start -----\n");
3fb16866b51ded Saravana Kannan 2023-02-06 1962 ret = true;
3fb16866b51ded Saravana Kannan 2023-02-06 1963 goto out;
3fb16866b51ded Saravana Kannan 2023-02-06 1964 }
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 1965
f3ae93e738dbce Saravana Kannan 2024-10-30 1966 sup_dev = get_dev_from_fwnode(sup_handle);
f3ae93e738dbce Saravana Kannan 2024-10-30 1967 con_dev = get_dev_from_fwnode(con_handle);
3fb16866b51ded Saravana Kannan 2023-02-06 1968 /*
3fb16866b51ded Saravana Kannan 2023-02-06 1969 * If sup_dev is bound to a driver and @con hasn't started binding to a
3fb16866b51ded Saravana Kannan 2023-02-06 1970 * driver, sup_dev can't be a consumer of @con. So, no need to check
3fb16866b51ded Saravana Kannan 2023-02-06 1971 * further.
3fb16866b51ded Saravana Kannan 2023-02-06 1972 */
3fb16866b51ded Saravana Kannan 2023-02-06 1973 if (sup_dev && sup_dev->links.status == DL_DEV_DRIVER_BOUND &&
f3ae93e738dbce Saravana Kannan 2024-10-30 1974 con_dev && con_dev->links.status == DL_DEV_NO_DRIVER) {
3fb16866b51ded Saravana Kannan 2023-02-06 1975 ret = false;
3fb16866b51ded Saravana Kannan 2023-02-06 1976 goto out;
3fb16866b51ded Saravana Kannan 2023-02-06 1977 }
3fb16866b51ded Saravana Kannan 2023-02-06 1978
3fb16866b51ded Saravana Kannan 2023-02-06 1979 list_for_each_entry(link, &sup_handle->suppliers, c_hook) {
dce7a5c7bfa36d Saravana Kannan 2024-03-04 1980 if (link->flags & FWLINK_FLAG_IGNORE)
dce7a5c7bfa36d Saravana Kannan 2024-03-04 1981 continue;
dce7a5c7bfa36d Saravana Kannan 2024-03-04 1982
f3ae93e738dbce Saravana Kannan 2024-10-30 1983 if (__fw_devlink_relax_cycles(con_handle, link->supplier)) {
3fb16866b51ded Saravana Kannan 2023-02-06 1984 __fwnode_link_cycle(link);
3fb16866b51ded Saravana Kannan 2023-02-06 1985 ret = true;
3fb16866b51ded Saravana Kannan 2023-02-06 1986 }
3fb16866b51ded Saravana Kannan 2023-02-06 1987 }
3fb16866b51ded Saravana Kannan 2023-02-06 1988
3fb16866b51ded Saravana Kannan 2023-02-06 1989 /*
3fb16866b51ded Saravana Kannan 2023-02-06 1990 * Give priority to device parent over fwnode parent to account for any
3fb16866b51ded Saravana Kannan 2023-02-06 1991 * quirks in how fwnodes are converted to devices.
3fb16866b51ded Saravana Kannan 2023-02-06 1992 */
3fb16866b51ded Saravana Kannan 2023-02-06 1993 if (sup_dev)
3fb16866b51ded Saravana Kannan 2023-02-06 1994 par_dev = get_device(sup_dev->parent);
3fb16866b51ded Saravana Kannan 2023-02-06 1995 else
3fb16866b51ded Saravana Kannan 2023-02-06 1996 par_dev = fwnode_get_next_parent_dev(sup_handle);
3fb16866b51ded Saravana Kannan 2023-02-06 1997
f3ae93e738dbce Saravana Kannan 2024-10-30 1998 if (par_dev && __fw_devlink_relax_cycles(con_handle, par_dev->fwnode)) {
5c764791fb7b81 Saravana Kannan 2024-02-02 1999 pr_debug("%pfwf: cycle: child of %pfwf\n", sup_handle,
5c764791fb7b81 Saravana Kannan 2024-02-02 2000 par_dev->fwnode);
3fb16866b51ded Saravana Kannan 2023-02-06 2001 ret = true;
5c764791fb7b81 Saravana Kannan 2024-02-02 2002 }
3fb16866b51ded Saravana Kannan 2023-02-06 2003
3fb16866b51ded Saravana Kannan 2023-02-06 2004 if (!sup_dev)
3fb16866b51ded Saravana Kannan 2023-02-06 2005 goto out;
3fb16866b51ded Saravana Kannan 2023-02-06 2006
3fb16866b51ded Saravana Kannan 2023-02-06 2007 list_for_each_entry(dev_link, &sup_dev->links.suppliers, c_node) {
3fb16866b51ded Saravana Kannan 2023-02-06 2008 /*
3fb16866b51ded Saravana Kannan 2023-02-06 2009 * Ignore a SYNC_STATE_ONLY flag only if it wasn't marked as
3fb16866b51ded Saravana Kannan 2023-02-06 2010 * such due to a cycle.
3fb16866b51ded Saravana Kannan 2023-02-06 2011 */
3fb16866b51ded Saravana Kannan 2023-02-06 2012 if (device_link_flag_is_sync_state_only(dev_link->flags) &&
3fb16866b51ded Saravana Kannan 2023-02-06 2013 !(dev_link->flags & DL_FLAG_CYCLE))
3fb16866b51ded Saravana Kannan 2023-02-06 2014 continue;
3fb16866b51ded Saravana Kannan 2023-02-06 2015
f3ae93e738dbce Saravana Kannan 2024-10-30 2016 if (__fw_devlink_relax_cycles(con_handle,
3fb16866b51ded Saravana Kannan 2023-02-06 2017 dev_link->supplier->fwnode)) {
5c764791fb7b81 Saravana Kannan 2024-02-02 2018 pr_debug("%pfwf: cycle: depends on %pfwf\n", sup_handle,
5c764791fb7b81 Saravana Kannan 2024-02-02 2019 dev_link->supplier->fwnode);
3fb16866b51ded Saravana Kannan 2023-02-06 2020 fw_devlink_relax_link(dev_link);
3fb16866b51ded Saravana Kannan 2023-02-06 2021 dev_link->flags |= DL_FLAG_CYCLE;
3fb16866b51ded Saravana Kannan 2023-02-06 2022 ret = true;
3fb16866b51ded Saravana Kannan 2023-02-06 2023 }
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 2024 }
3fb16866b51ded Saravana Kannan 2023-02-06 2025
3fb16866b51ded Saravana Kannan 2023-02-06 2026 out:
3fb16866b51ded Saravana Kannan 2023-02-06 2027 sup_handle->flags &= ~FWNODE_FLAG_VISITED;
3fb16866b51ded Saravana Kannan 2023-02-06 2028 put_device(sup_dev);
3fb16866b51ded Saravana Kannan 2023-02-06 2029 put_device(par_dev);
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 2030 return ret;
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 2031 }
b0e2fa4f611bb9 Saravana Kannan 2020-12-17 2032
:::::: The code at line 1941 was first introduced by commit
:::::: b0e2fa4f611bb9ab22928605d5b1c7fd44e73955 driver core: Handle cycles in device links created by fw_devlink
:::::: TO: Saravana Kannan <saravanak@google.com>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-25 3:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-25 3:04 [android-common:android15-6.6 0/1] drivers/base/core.c:1941: warning: Function parameter or member 'con_handle' not described in '__fw_devlink_relax_cycles' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.