STRUCT HV_MSI_DESC(9)
π struct hv_msi_desc(9) π
okay bestie, welcome to the Kernel API Manual β¨ and specifically to struct hv_msi_desc(9) β yes that's the page name, yes we're doing this, and yes you're gonna get it. sit down, hydrate, let's go π«Ά
β¨ NAME β¨
struct hv_msi_desc β and honestly? that's it. the manpage gives us nothing else here. a whole dash. the void. main character energy with no backstory π (we love a mystery though, so keep reading, the SYNOPSIS has the tea β)
πΈ SYNOPSIS πΈ
here's the whole struct, character for character, no cap:
struct hv_msi_desc {
u8 vector;
u8 delivery_mode;
u16 vector_count;
u32 reserved;
u64 cpu_mask;
};
likeβ¦ look at her. so compact. so iconic. let's meet the members π
π¦ Members π¦
vectorβ the IDT entry. that's the whole description. no notes πdelivery_modeβ as defined in Intel's Programmer's Reference Manual, Volume 3, Chapter 8. yeah, that's the homework. go read chapter 8, i'll wait π§vector_countβ the number of contiguous entries in the Interrupt Descriptor Table that this Message-Signaled Interrupt is occupying. and for "MSI", as first defined in PCI 2.2, this can be between1andβ¦32β okay so ngl, the manpage formatting literally split this off into its own entry and i'm not gonna lie to you about it π this is the rest of the line above:32. so,1and32. and then β For "MSI-X," as first defined in PCI 3.0, this must be1, because each MSI-X table entry would have its own descriptor. periodt, no exceptions π₯reservedβ empty space. she's just vibing. padding queen πcpu_maskβ all the target virtual processors. every single one. the whole group chat π«Ά
π SEE ALSO π
first up, the location tea: Kernel file ./drivers/pci/controller/pci-hyperv.c struct β that's where she lives π
and now the full squad, because bestie has a lot of friends and we are NOT leaving anyone out:
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_eject_device(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)
lowkey the whole drivers/pci/controller directory is a friend group and this struct is the one who brings the snacks π
and that's the page!! π sign-off time: this lives over in ./drivers/pci/controller, dated October 2026, and it's filed under struct hv_msi_desc(9). slay, you read the whole thing, i'm so proud of you πβ¨π
π¦ 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