fw_devlink_create_devlink(9)
π fw_devlink_create_devlink β¨
okay bestie, welcome to the Kernel API Manual β this one's a kernel-internal little icon and she's here to set up a device link between a consumer and her supplier π«Ά
πΈ NAME πΈ
fw_devlink_create_devlink β lowkey the function that creates a device link from a consumer to fwnode π
β¨ SYNOPSIS β¨
int fw_devlink_create_devlink (struct device *con , struct fwnode_handle
*sup_handle , struct fwnode_link *link );
π ARGUMENTS π
conβ the consumer device for the device link, she's the one doing the consuming πsup_handleβ the fwnode handle of the supplier, i.e. the one doing the supplying π§linkβ the fwnode link that's being converted to a device link, glow-up in progress π
π¦ DESCRIPTION π¦
so the whole vibe here is: this function will try to create a device link between the consumer device con and the supplier device represented by sup_handle β¨
and like β the supplier has to be provided as a fwnode, and there's a real reason for that, no cap. incorrect cycles in fwnode links can sometimes cause the supplier device to never be created π not iconic. so this function detects those cases and returns an error if it cannot create a device link from the consumer to a missing supplier π
here's the return tea, fr fr:
0β on successfully creating a device link, slay π-EINVALβ if the device link cannot be created as expected, big sad π-EAGAINβ if the device link cannot be created right now, but it may be possible to do that in the future. it's not a no, it's a "not yet" β
π SEE ALSO π
she's in the Kernel file ./drivers/base/core.c, and the friend group is extensive, bestie. like, enormous. buckle up π’
__fwnode_link_add(9)__fwnode_link_del(9)__fwnode_link_cycle(9)fwnode_links_purge_suppliers(9)fwnode_links_purge_consumers(9)fwnode_links_purge(9)__fwnode_links_move_consumers(9)__fw_devlink_pickup_dangling_consumers(9)fw_devlink_refresh_fwnode(9)device_is_dependent(9)device_pm_move_to_tail(9)device_link_wait_removal(9)device_link_add(9)device_link_del(9)device_link_remove(9)device_links_check_suppliers(9)__device_links_queue_sync_state(9)device_links_flush_sync_list(9)device_links_force_bind(9)device_links_driver_bound(9)__device_links_no_driver(9)device_links_no_driver(9)device_links_driver_cleanup(9)device_links_busy(9)device_links_unbind_consumers(9)device_links_purge(9)wait_for_init_devices_probe(9)fwnode_is_ancestor_of(9)fwnode_get_next_parent_dev(9)__fw_devlink_relax_cycles(9)__fw_devlink_link_to_consumers(9)__fw_devlink_link_to_suppliers(9)dev_driver_string(9)device_release(9)devm_device_add_group(9)devices_kset_move_before(9)devices_kset_move_after(9)devices_kset_move_last(9)device_create_file(9)device_remove_file(9)device_remove_file_self(9)device_create_bin_file(9)device_remove_bin_file(9)device_initialize(9)kobject_has_children(9)dev_set_name(9)device_add(9)device_register(9)get_device(9)put_device(9)device_del(9)device_unregister(9)device_get_devnode(9)device_for_each_child(9)device_for_each_child_reverse(9)device_for_each_child_reverse_from(9)device_find_child(9)device_offline(9)device_online(9)__root_device_register(9)root_device_unregister(9)device_create(9)device_create_with_groups(9)device_destroy(9)device_rename(9)device_move(9)device_change_owner(9)device_shutdown(9)dev_err_probe(9)dev_warn_probe(9)set_primary_fwnode(9)set_secondary_fwnode(9)device_remove_of_node(9)device_add_of_node(9)device_set_of_node_from_dev(9)get_dev_from_fwnode(9)
like I said. extensive. ππ
real talk: the cycle-detection bit is not a vibe to ignore β a missing supplier is a genuine error case here, so don't go assuming a link always gets made π«Ά
okay that's the whole page, bestie!! this one came out of ./drivers/base in October 2026, filed under fw_devlink_create_devlink(9) β go forth and link responsibly πΈβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms