Linux kernel and device drivers for NXP i.MX platforms
 help / color / mirror / Atom feed
* [PATCH] driver core: avoid repeatedly printing the same 'Fixed dependency' log
@ 2026-05-09 11:17 Xu Yang
  2026-05-09 11:43 ` sashiko-bot
  0 siblings, 1 reply; 2+ messages in thread
From: Xu Yang @ 2026-05-09 11:17 UTC (permalink / raw)
  To: gregkh, rafael, dakr, saravanak; +Cc: driver-core, linux-kernel, imx

The "Fixed dependency cycle(s) with ..." log is printed for each cycle
finding process. In particular, the same cycle may be parsed many times
during the proxy link setup. For example, if /soc/bus@4c000000/usb@4c100000
is a devicetree structure and node usb@4c100000 is in a cycle, then for
each device registration (soc, 4c000000.bus and 4c100000.usb),
fw_devlink_create_devlink() will find the same cycle and print a log.
The repeat logs are redundant and may cause confusion for the user. Move
the pr_debug() to __fwnode_link_cycle() and avoid printing the log if it
has already been printed.

Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
---
 drivers/base/core.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index d49420e066de..af0371d4ed83 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -127,7 +127,13 @@ static void __fwnode_link_cycle(struct fwnode_link *link)
 {
 	pr_debug("%pfwf: cycle: depends on %pfwf\n",
 		 link->consumer, link->supplier);
+
+	if (link->flags & FWLINK_FLAG_CYCLE)
+		return;
+
 	link->flags |= FWLINK_FLAG_CYCLE;
+	pr_info("%pfwf: Fixed dependency cycle(s) with %pfwf\n",
+		link->consumer, link->supplier);
 }
 
 /**
@@ -2140,8 +2146,6 @@ static int fw_devlink_create_devlink(struct device *con,
 	if (__fw_devlink_relax_cycles(link->consumer, sup_handle)) {
 		__fwnode_link_cycle(link);
 		pr_debug("----- cycle: end -----\n");
-		pr_info("%pfwf: Fixed dependency cycle(s) with %pfwf\n",
-			link->consumer, sup_handle);
 	}
 	device_links_write_unlock();
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] driver core: avoid repeatedly printing the same 'Fixed dependency' log
  2026-05-09 11:17 [PATCH] driver core: avoid repeatedly printing the same 'Fixed dependency' log Xu Yang
@ 2026-05-09 11:43 ` sashiko-bot
  0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-05-09 11:43 UTC (permalink / raw)
  To: Xu Yang; +Cc: Frank.Li, imx

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Moving `pr_info()` into `__fwnode_link_cycle()` causes log spam and highly misleading dependency cycle logs during initial cycle detection.
--

commit b7864d7a5daadca2b750e1e3f78ba9cec6f247d5
Author: Xu Yang <xu.yang_2@nxp.com>

driver core: avoid repeatedly printing the same 'Fixed dependency' log

This commit attempts to deduplicate "Fixed dependency cycle" logs by moving
the print statement into __fwnode_link_cycle() and gating it behind the
FWLINK_FLAG_CYCLE flag check.

> diff --git a/drivers/base/core.c b/drivers/base/core.c
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -127,7 +127,13 @@ static void __fwnode_link_cycle(struct fwnode_link *link)
>  {
>  	pr_debug("%pfwf: cycle: depends on %pfwf\n",
>  		 link->consumer, link->supplier);
> +
> +	if (link->flags & FWLINK_FLAG_CYCLE)
> +		return;
> +
>  	link->flags |= FWLINK_FLAG_CYCLE;
> +	pr_info("%pfwf: Fixed dependency cycle(s) with %pfwf\n",
> +		link->consumer, link->supplier);
>  }

When moving this pr_info() into __fwnode_link_cycle(), does this cause the
log to be printed for every intermediate edge in the cycle?

__fw_devlink_relax_cycles() unwinds the recursion and calls
__fwnode_link_cycle() for each link involved in the cycle:

__fw_devlink_relax_cycles() {
	...
	list_for_each_entry(link, &sup_handle->suppliers, c_hook) {
		if (link->flags & FWLINK_FLAG_IGNORE)
			continue;

		if (__fw_devlink_relax_cycles(con_handle, link->supplier)) {
			__fwnode_link_cycle(link);
			ret = true;
		}
	}
	...
}

Because of this recursive unwinding, won't this change print the
"Fixed dependency cycle(s)" message for every node involved in a newly
detected cycle, rather than just the specific link that closed it?

Could this lead to more confusing log spam by flagging older, valid
dependencies as the source of the cycle?

[ ... ]

> @@ -2140,8 +2146,6 @@ static int fw_devlink_create_devlink(struct device *con,
>  	if (__fw_devlink_relax_cycles(link->consumer, sup_handle)) {
>  		__fwnode_link_cycle(link);
>  		pr_debug("----- cycle: end -----\n");
> -		pr_info("%pfwf: Fixed dependency cycle(s) with %pfwf\n",
> -			link->consumer, sup_handle);
>  	}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260509111728.4123331-1-xu.yang_2@nxp.com?part=1

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-09 11:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-09 11:17 [PATCH] driver core: avoid repeatedly printing the same 'Fixed dependency' log Xu Yang
2026-05-09 11:43 ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox