drivers/pci/hotplug/pnv_php.c
Source file repositories/reference/linux-study-clean/drivers/pci/hotplug/pnv_php.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/pci/hotplug/pnv_php.c- Extension
.c- Size
- 31153 bytes
- Lines
- 1247
- Domain
- Representative Device Path
- Bucket
- PCIe NVMe Storage Path
- Inferred role
- Representative Device Path: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitfield.hlinux/libfdt.hlinux/module.hlinux/pci.hlinux/delay.hlinux/pci_hotplug.hlinux/of_fdt.hasm/opal.hasm/pnv-pci.hasm/ppc-pci.h
Detected Declarations
struct pnv_php_eventfunction pnv_php_disable_irqfunction pnv_php_free_slotfunction pnv_php_put_slotfunction list_for_each_entryfunction pnv_php_rmv_pdnsfunction for_each_child_of_nodefunction of_node_releasefunction for_each_child_of_nodefunction pnv_php_rmv_devtreefunction pnv_php_reverse_nodesfunction pnv_php_populate_changesetfunction for_each_child_of_node_scopedfunction pnv_php_add_pdnsfunction pnv_php_add_devtreefunction pnv_php_set_slot_power_statefunction pnv_php_get_power_statefunction pcie_check_link_activefunction pnv_php_get_adapter_statefunction pnv_php_get_raw_indicator_statusfunction pnv_php_get_attention_statefunction pnv_php_set_attention_statefunction pnv_php_activate_slotfunction pnv_php_enablefunction pnv_php_reset_slotfunction pnv_php_enable_slotfunction pnv_php_disable_all_irqsfunction pnv_php_disable_all_downstream_irqsfunction pnv_php_disable_slotfunction pnv_php_releasefunction pnv_php_register_slotfunction pnv_php_enable_msixfunction pnv_php_detect_clear_suprise_removal_freezefunction pnv_php_event_handlerfunction pnv_php_interruptfunction pnv_php_init_irqfunction pnv_php_enable_irqfunction pnv_php_register_onefunction pnv_php_registerfunction pnv_php_unregister_onefunction pnv_php_unregisterfunction pnv_php_initfunction pnv_php_exitmodule init pnv_php_initexport pnv_php_find_slotexport pnv_php_set_slot_power_state
Annotated Snippet
module_init(pnv_php_init);
module_exit(pnv_php_exit);
MODULE_VERSION(DRIVER_VERSION);
MODULE_LICENSE("GPL v2");
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
Annotation
- Immediate include surface: `linux/bitfield.h`, `linux/libfdt.h`, `linux/module.h`, `linux/pci.h`, `linux/delay.h`, `linux/pci_hotplug.h`, `linux/of_fdt.h`, `asm/opal.h`.
- Detected declarations: `struct pnv_php_event`, `function pnv_php_disable_irq`, `function pnv_php_free_slot`, `function pnv_php_put_slot`, `function list_for_each_entry`, `function pnv_php_rmv_pdns`, `function for_each_child_of_node`, `function of_node_release`, `function for_each_child_of_node`, `function pnv_php_rmv_devtree`.
- Atlas domain: Representative Device Path / PCIe NVMe Storage Path.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.