It's possible that the same device link may be added by parsing the function dependecy in DT. e.g. clock/gpio/regulators. Simply go out for this case.
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: "Rafael J. Wysocki" <raf...@kernel.org> Cc: Saravana Kannan <sarava...@google.com> Signed-off-by: Dong Aisheng <aisheng.d...@nxp.com> --- drivers/base/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/base/core.c b/drivers/base/core.c index 4c03bdd3a268..7d91d4074136 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -567,6 +567,9 @@ struct device_link *device_link_add(struct device *consumer, if (link->consumer != consumer) continue; + if (flags == link->flags) + goto out; + if (flags & DL_FLAG_PM_RUNTIME) { if (!(link->flags & DL_FLAG_PM_RUNTIME)) { pm_runtime_new_link(consumer); -- 2.23.0