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 <[email protected]> Cc: "Rafael J. Wysocki" <[email protected]> Cc: Saravana Kannan <[email protected]> Signed-off-by: Dong Aisheng <[email protected]> --- 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

