tb_switch_alloc_safe_mode(9)
π tb_switch_alloc_safe_mode β Kernel API Manual, section 9 π
okay bestie, story time: this is a page from the Kernel API Manual (section 9) about one very specific little function, and honestly it's giving "baby switch before its glow-up" energy. let's get into it β¨
β¨ NAME β¨
tb_switch_alloc_safe_mode β allocate a switch that is in safe mode π¦
πΈ SYNOPSIS πΈ
struct tb_switch * tb_switch_alloc_safe_mode (struct tb *tb , struct
device *parent , u64 route );
π ARGUMENTS π
tbβ pointer to the owning domain πparentβ the parent device for this switch π«Άrouteβ the route string for this switch π
π DESCRIPTION π
so this function creates a switch in safe mode, and ngl "safe mode" is doing a lot of heavy lifting here π it literally means the switch pretty much lacks all capabilities except the DMA configuration port β and that's before it gets flashed with a valid NVM firmware. like, it's a switch that hasn't found itself yet, periodt. π
the returned switch must be released by calling tb_switch_put π¨ don't just ghost it, bestie β that's a leak.
β RETURN β
a pointer to struct tb_switch, or ERR_PTR in case of failure π (iykyk β always check your pointers)
π₯ SEE ALSO π₯
kernel file ./drivers/thunderbolt/switch.c and honestly the whole friend group:
tb_switch_nvm_read(9)tb_port_state(9)tb_wait_for_port(9)tb_port_add_nfc_credits(9)tb_port_clear_counter(9)tb_port_unlock(9)tb_port_enable(9)tb_port_disable(9)tb_port_reset(9)tb_port_alloc_in_hopid(9)tb_port_alloc_out_hopid(9)tb_port_release_in_hopid(9)tb_port_release_out_hopid(9)tb_next_port_on_path(9)tb_port_get_link_speed(9)tb_port_get_link_generation(9)tb_port_get_link_width(9)tb_port_width_supported(9)tb_port_set_link_width(9)tb_port_set_lane_bonding(9)tb_port_lane_bonding_enable(9)tb_port_lane_bonding_disable(9)tb_port_wait_for_link_width(9)tb_port_update_credits(9)tb_port_is_enabled(9)tb_usb3_port_is_enabled(9)tb_usb3_port_enable(9)tb_pci_port_is_enabled(9)tb_pci_port_enable(9)tb_dp_port_hpd_is_active(9)tb_dp_port_hpd_clear(9)tb_dp_port_set_hops(9)tb_dp_port_is_enabled(9)tb_dp_port_enable(9)tb_switch_reset(9)tb_switch_wait_for_bit(9)tb_switch_alloc(9)tb_switch_configure(9)tb_switch_configuration_valid(9)tb_switch_lane_bonding_enable(9)tb_switch_lane_bonding_disable(9)tb_switch_set_link_width(9)tb_switch_configure_link(9)tb_switch_unconfigure_link(9)tb_switch_add(9)tb_switch_remove(9)tb_sw_set_unplugged(9)tb_switch_resume(9)tb_switch_suspend(9)tb_switch_query_dp_resource(9)tb_switch_alloc_dp_resource(9)tb_switch_dealloc_dp_resource(9)tb_switch_find_by_link_depth(9)tb_switch_find_by_uuid(9)tb_switch_find_by_route(9)tb_switch_find_port(9)tb_switch_pcie_l1_enable(9)tb_switch_xhci_connect(9)tb_switch_xhci_disconnect(9)
and that's the whole page, bestie β no cap, every single reference is there π
this iconic little manual page comes to you from ./drivers/thunderbolt, dated October 2026, and it's tb_switch_alloc_safe_mode(9) signing off π§β¨ mwah π
π¦ 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