__pci_reset_function_locked(9)
β¨ NAME β¨
okay so bestie, welcome to __pci_reset_function_locked(9) from the Kernel API Manual β this is literally the βreset a PCI device function while holding the @dev mutex lockβ one. The lock is the whole personality, no cap. π
π SYNOPSIS π
int __pci_reset_function_locked (struct pci_dev *dev );
π ARGUMENTS π
devβ the PCI device to reset. That's the target, bestie. π―
π¦ DESCRIPTION π¦
Some devices allow an individual function to be reset without affecting other functions in the same device. Like, some devices β not a universal slay. The PCI device must be responsive to PCI config space in order to use this function. If config space is giving nothing, this is not the moment.
The device function is presumed to be unused and the caller is holding the device mutex lock when this function is called. Both of those are the assumption, okay? Don't roll up with a busy function and no lock and expect it to work.
Resetting the device will make the contents of PCI configuration space random. Random! So any caller of this must be prepared to reinitialise the device including MSI, bus mastering, BARs, decoding IO and memory spaces, etc. That's a whole checklist, not a cute little reset-and-done. π₯
π CONTEXT π
The caller must hold the device lock. That's it. That's the rule. If you don't have the device lock, this page is not for you yet. π«Ά
π RETURN π
0if the device function was successfully reset. Slay. β¨- negative if the device doesn't support resetting a single function. Not every device can do the single-function reset, and that's okay β but it's a negative return. π
π SEE ALSO π
Kernel file: ./drivers/pci/pci.c β yes, that's the source file. Now here's the whole friend group of PCI helpers:
pci_bus_max_busnr(9), pci_status_get_and_clear_errors(9), pci_dev_str_match_path(9),
pci_dev_str_match(9), pci_find_capability(9), pci_bus_find_capability(9),
pci_find_next_ext_capability(9), pci_find_ext_capability(9), pci_get_dsn(9),
pci_find_next_ht_capability(9), pci_find_ht_capability(9),
pci_find_vsec_capability(9), pci_find_dvsec_capability(9),
pci_find_parent_resource(9), pci_find_resource(9), pci_resource_name(9),
pci_wait_for_pending(9), pci_request_acs(9), pci_std_enable_acs(9),
pci_enable_acs(9), pci_restore_bars(9), pci_update_current_state(9),
pci_refresh_power_state(9), pci_platform_power_transition(9),
pci_resume_bus(9), pci_power_up(9), pci_set_full_power_state(9),
__pci_dev_set_current_state(9), pci_bus_set_current_state(9),
pci_set_low_power_state(9), pci_set_power_state(9), pci_save_state(9),
pci_restore_state(9), pci_store_saved_state(9), pci_load_saved_state(9),
pci_load_and_free_saved_state(9), pci_reenable_device(9),
pci_enable_device_mem(9), pci_enable_device(9),
pcibios_release_device(9), pcibios_disable_device(9),
pci_disable_enabled_device(9), pci_disable_device(9),
pcibios_set_pcie_reset_state(9), pci_set_pcie_reset_state(9),
pcie_clear_root_pme_status(9), pci_check_pme_status(9),
pci_pme_wakeup(9), pci_pme_wakeup_bus(9), pci_pme_capable(9),
pci_pme_restore(9), pci_pme_active(9), __pci_enable_wake(9),
pci_enable_wake(9), pci_wake_from_d3(9), pci_target_state(9),
pci_prepare_to_sleep(9), pci_back_from_sleep(9),
pci_finish_runtime_suspend(9), pci_dev_run_wake(9),
pci_dev_need_resume(9), pci_dev_adjust_pme(9),
pci_dev_complete_resume(9), pci_choose_state(9),
pci_suspend_retains_context(9), pci_bridge_d3_possible(9),
pci_d3cold_enable(9), pci_d3cold_disable(9), pci_pm_init(9),
_pci_add_cap_save_buffer(9), pci_allocate_cap_save_buffers(9),
pci_configure_ari(9), pci_acs_enabled(9), pci_acs_path_enabled(9),
pci_acs_init(9), pci_enable_atomic_ops_to_root(9),
pci_release_region(9), __pci_request_region(9), pci_request_region(9),
pci_release_selected_regions(9), pci_request_selected_regions(9),
pci_request_selected_regions_exclusive(9), pci_release_regions(9),
pci_request_regions(9), pci_request_regions_exclusive(9),
pci_remap_iospace(9), pci_unmap_iospace(9), pcibios_setup(9),
pcibios_set_master(9), pci_set_master(9), pci_clear_master(9),
pci_set_cacheline_size(9), pci_set_mwi(9), pci_try_set_mwi(9),
pci_clear_mwi(9), pci_disable_parity(9), pci_intx(9),
pci_wait_for_pending_transaction(9), pcie_flr(9), pcie_reset_flr(9),
pci_pm_reset(9), pcie_wait_for_link_status(9), pcie_retrain_link(9),
pcie_wait_for_link_delay(9), pcie_wait_for_link(9),
pci_bridge_wait_for_secondary_bus(9), pci_bridge_secondary_bus_reset(9),
pci_init_reset_methods(9), pci_reset_function(9),
pci_reset_function_locked(9), pci_try_reset_function(9),
pci_probe_reset_slot(9), pci_try_reset_slot(9), pci_try_reset_bus(9),
pci_reset_bridge(9), pci_bus_error_reset(9), pci_probe_reset_bus(9),
pci_reset_bus(9), pcix_get_max_mmrbc(9), pcix_get_mmrbc(9),
pcix_set_mmrbc(9), pcie_get_readrq(9), pcie_set_readrq(9),
pcie_get_mps(9), pcie_set_mps(9), pcie_bandwidth_available(9),
pcie_get_supported_speeds(9), pcie_get_speed_cap(9),
pcie_get_width_cap(9), pcie_bandwidth_capable(9),
__pcie_print_link_status(9), pcie_print_link_status(9),
pci_select_bars(9), pci_set_vga_state(9), pci_add_dma_alias(9),
pci_real_dma_dev(9), pci_specified_resource_alignment(9),
pci_bus_find_emul_domain_nr(9), pci_ext_cfg_avail(9)
xoxo, your kernel bestie π β source/version: ./drivers/pci Β· date: October 2026 Β· page: __pci_reset_function_locked(9). periodt. π
π¦ 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