hv_send_resources_allocated(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 ⭐

  • 0 on success πŸ’š
  • -errno on 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