hv_pci_eject_device(9)
π hv_pci_eject_device(9) π
okay so bestie, we're in the Kernel API Manual today and the page we're reading is literally called hv_pci_eject_device. yes bestie THIS is the hyperv pci device ejection lore π«Ά
β¨ NAME β¨
hv_pci_eject_device β handles device ejection π
like... it handles the ejection. that's the whole vibe. the device is leaving and this function is the one holding the door.
πΈ SYNOPSIS πΈ
void hv_pci_eject_device (struct hv_pci_dev *hpdev );
notice it returns void β no return value, no drama, it just does the thing π
π ARGUMENTS π
hpdevβ the internal device tracking struct. that's it, that's the whole argument. it's the little struct keeping tabs on the device, iykyk π
π¦ DESCRIPTION π¦
okay so here's the tea β: this function gets invoked when an ejection packet arrives. like the packet shows up and says "this device is so out of here."
and what does hv_pci_eject_device do about it? it just schedules work. that's literally it. that's the whole job. no cap.
why tho? because we don't want to re-enter the packet delivery code while it's still handling the ejection π like imagine trying to walk out the door while someone's still standing in the doorway β awkward. so instead we schedule the work and let the packet delivery code finish its moment in peace. main character energy for the packet handler, honestly π
so: packet arrives β schedule work β don't re-enter the delivery code. iconic, efficient, no chaos. periodt. β¨
π SEE ALSO π
bestie there is a WHOLE friend group here, buckle up π§:
kernel file ./drivers/pci/controller/pci-hyperv.c, struct hv_msi_desc(9), struct hv_msi_desc2(9), struct tran_int_desc(9), hv_irq_retarget_interrupt(9), hv_pci_generic_compl(9), devfn_to_wslot(9), wslot_to_devfn(9), _hv_pcifront_read_config(9), _hv_pcifront_write_config(9), hv_pcifront_read_config(9), hv_pcifront_write_config(9), hv_pci_read_config_compl(9), hv_read_config_block(9), hv_pci_write_config_compl(9), hv_write_config_block(9), hv_register_block_invalidate(9), hv_msi_free(9), hv_compose_msi_msg(9), hv_pcie_init_irq_domain(9), get_bar_size(9), survey_child_resources(9), prepopulate_bars(9), create_root_hv_pci_bus(9), q_resource_requirements(9), new_pcichild_device(9), get_pcichild_wslot(9), pci_devices_present_work(9), hv_pci_start_relations_work(9), hv_pci_devices_present(9), hv_pci_devices_present2(9), hv_eject_device_work(9), hv_pci_onchannelcallback(9), hv_pci_protocol_negotiation(9), hv_pci_free_bridge_windows(9), hv_pci_allocate_bridge_windows(9), hv_allocate_config_window(9), hv_pci_enter_d0(9), hv_pci_query_relations(9), hv_send_resources_allocated(9), hv_send_resources_released(9), hv_pci_probe(9), hv_pci_remove(9)
like I said. whole friend group. go say hi π
and that's the page bestie!! this little cutie lives over in ./drivers/pci/controller, the version vibes are from October 2026, and it's filed under hv_pci_eject_device(9) π slay, bye π
β¨
π¦ 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