Re: [PATCH v2 06/11] driver core: fw_devlink: Allow marking a fwnode link as being part of a cycle

Andy Shevchenko
2023-01-27T09:34:16Z

On Thu, Jan 26, 2023 at 04:11:33PM -0800, Saravana Kannan wrote:
> To improve detection and handling of dependency cycles, we need to be
> able to mark fwnode links as being part of cycles. fwnode links marked
> as being part of a cycle should not block their consumers from probing.

...

> + list_for_each_entry(link, &fwnode->suppliers, c_hook) {
> + if (link->flags & FWLINK_FLAG_CYCLE)
> + continue;
> + return link->supplier;

Hmm...

if (!(link->flags & FWLINK_FLAG_CYCLE))
return link->supplier;

?

> + }
> +
> + return NULL;

...

> - if (dev->fwnode && !list_empty(&dev->fwnode->suppliers) &&
> - !fw_devlink_is_permissive()) {
> - sup_fw = list_first_entry(&dev->fwnode->suppliers,
> - struct fwnode_link,
> - c_hook)->supplier;
> + sup_fw = fwnode_links_check_suppliers(dev->fwnode);

dev_fwnode() ?

...

> - val = !list_empty(&dev->fwnode->suppliers);
> + mutex_lock(&fwnode_link_lock);
> + val = !!fwnode_links_check_suppliers(dev->fwnode);

Ditto?

> + mutex_unlock(&fwnode_link_lock);

--
With Best Regards,
Andy Shevchenko