From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [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'
Date: Sun, 25 Oct 2026 11:04:02 +0800 [thread overview]
Message-ID: <202610251023.v7Vd0Gut-lkp@intel.com> (raw)
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
reply other threads:[~2026-10-25 3:04 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202610251023.v7Vd0Gut-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.