device_links...ck_suppliers(9)
okay bestie, welcome to the Kernel API Manual entry for device_links...ck_suppliers(9) β yes, the title is doing its little abbreviation moment, but the function is device_links_check_suppliers. Let's get into it π
β¨
πΈ NAME πΈ
device_links_check_suppliers β literally checking whether the supplier drivers are present. Presence check, no cap β
β¨ SYNOPSIS β¨
int device_links_check_suppliers (struct device *dev );
π ARGUMENTS π
devβ the consumer device. This is the device whose supplier links we're checking, the main character of this little operation π
π¦ DESCRIPTION π¦
So the vibe here is: check the links from this device to any suppliers. Walk the list of the device's links to suppliers and see if all of them are available. If not, simply return -EPROBE_DEFER β no dramatic exit, just that return value, periodt.
We need to guarantee that the supplier will not go away after the check has been positive here. It only can go away in __device_release_driver, and that function checks the device's links to consumers. This means we need to mark the link as "consumer probe in progress" to make the supplier removal wait for us to complete (or bad things may happen). bad things may happen is right there in the manual, bestie β this is not the part to skip π
Links without the DL_FLAG_MANAGED flag set are ignored. Not it, skipped, ignored, bye π
π SEE ALSO π
Kernel file ./drivers/base/core.c is the hangout spot, and here's the whole squad, fr fr:
__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_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_create_devlink(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)
okay that's the whole page, bestie π β source/version is ./drivers/base, the date is October 2026, and the page tag is device_links...ck_suppliers(9). byeee π«Άπ
π¦ 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