hv_send_resources_allocated(9)
π hv_send_resources_allocated β a.k.a. the "here's what I'm using, bestie" message
okay so real talk, this page lives in the Kernel API Manual (section 9, the fun one) and it's called hv_send_resources_allocated. Say it with me. Slay. β¨
πΈ NAME πΈ
hv_send_resources_allocated β report local resource choices π
Like, you picked your resources, now go tell somebody. That's the whole gig.
π¦ SYNOPSIS π¦
int hv_send_resources_allocated (struct hv_device *hdev );
π ARGUMENTS π
hdevβ VMBus's tracking struct for this root PCI bus. that's it, that's the one param, she's carrying the whole vibe π«Ά
π DESCRIPTION π
okay so picture this: the host OS is literally sitting there expecting to be sent a request as a message, and that message contains all the resources that the device will use. all of them. no cap. π¬
then the response comes back containing those same resources, but "translated" β which is to say, the values which should be used by the hardware when it delivers an interrupt. (and MMIO resources are used in local terms, iykyk.)
this is nice for Windows, and it lines up with the FDO/PDO split β which, fun fact, doesn't exist in Linux. not even a little. Linux is deeply expecting to scan an emulated PCI configuration space. like, deeply. main character energy, honestly. π
so why do we even send this message here? because it drives the state machine on the host forward. that's the reason. it's not here to be useful to Linux, it's here to nudge the host along. π§
β RETURN β
0on success π-errnoon failure π
π₯ SEE ALSO π₯
the kernel file ./drivers/pci/controller/pci-hyperv.c (go read it, it's giving lore) plus all of these icons:
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_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_released(9), hv_pci_probe(9), hv_pci_remove(9)
(spot the sibling: hv_send_resources_released(9) β she's the other half of this duo π«Ά)
ngl the whole thing is basically "tell the host what you're using so it stops refreshing the page." iconic behavior. π
so yeah, that's the page!! brought to you by the lovely humans at ./drivers/pci/controller, dated October 2026, filed under hv_send_resources_allocated(9) in the Kernel API Manual. go forth and report your local resource choices, bestie πβ¨π
π¦ 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