fw_devlink_refresh_fwnode(9)
π fw_devlink_refresh_fwnode(9) β the Kernel API Manual, but make it make sense
okay so bestie, this one's from the Kernel API Manual (section 9, kernel-adjacent, very much "the adults are talking" energy) and it's honestly so niche but so iconic. It's literally one function, one argument, and then a SEE ALSO list that goes on for communities. Buckle up π
β¨ NAME β¨
fw_devlink_refresh_fwnode β recheck the tree under this firmware node π³
Like, the whole job. Recheck the tree. Under this fwnode. That's the vibe check right there.
πΈ SYNOPSIS πΈ
void fw_devlink_refresh_fwnode (struct fwnode_handle *fwnode );
Returns nothing (void), takes one pointer, doesn't miss. Periodt. β¨
π¦ ARGUMENTS π¦
fwnodeβ the fwnode under which the fwnode tree has changed. That's it, that's the tea π It's the node whose little subtree went through a glow-up (or a whole restructuring, no shade), and this is the node you point at.
π DESCRIPTION π
So here's the situation. This function is mainly meant to adjust the supplier/consumer dependencies after a fwnode tree overlay has occurred.
Read that again, bestie: something in the tree got overlaid β moved, added, rearranged β and now the supplier/consumer relationships are lowkey out of sync with reality. This function is the one that goes "okay, let's recheck everything under this node and get the dependencies matching the tree again." π₯
Not me caring deeply about dependency graphs. It's giving main character energy honestly. π
It's mainly for that overlay case β that's the framing the doc gives, so that's what we're saying. No inventing extra behaviour, I would never π
π₯ SEE ALSO π₯
okay this is the part where I need you to sit down. This list is long. Like, "texting the group chat at 3am" long. But every single one of them is a real reference and I'm not skipping a single one, because we don't do that here π
First, the source: this all lives in the kernel file ./drivers/base/core.c π«Ά
The fwnode link crew:
__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)
Dependency + PM squad:
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)
Tree-walking & cycle-relaxing:
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)
Device core, the whole entire life:
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)
Iterate the children, iconically:
device_for_each_child(9)device_for_each_child_reverse(9)device_for_each_child_reverse_from(9)device_find_child(9)
Offline/online & root devices:
Create/destroy/rename/move the whole device:
device_create(9)device_create_with_groups(9)device_destroy(9)device_rename(9)device_move(9)device_change_owner(9)device_shutdown(9)
Probe-y bits:
Fwnodeβdevice glue (the actual besties):
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)
That's the whole list, all 76 references, not one dropped, because I love you and I respect the documentation π
lowkey sign-off: this page lives in ./drivers/base, and it's dated October 2026 in the fw_devlink_refresh_fwnode(9) manual. Go recheck your trees, bestie, and hydrate while you're at it ππ§π
π¦ 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