STRUCT MSI_PARENT_OPS(9)
π struct msi_parent_ops(9) β like, the whole Kernel API Manual tea ββ¨
okay bestie, buckle up π we're looking at struct msi_parent_ops today β it's literally the struct that holds all the MSI parent domain callbacks and the config info that goes with them. no cap. it lives over in the Kernel API Manual and honestly? it's giving backstage-pass energy π
β¨ SYNOPSIS β¨
struct msi_parent_ops {
u32 supported_flags;
u32 required_flags;
u32 chip_flags;
u32 bus_select_token;
u32 bus_select_mask;
const char *prefix;
bool (*init_dev_msi_info)(struct device *dev, struct irq_domain *domain, struct irq_domain *msi_parent_domain, struct msi_domain_info *msi_child_info);
};
πΈ MEMBERS πΈ
so here's the whole cast, main character by main character π
supported_flagsβ Required, bestie, don't forget it. these are the supported MSI flags of the parent domain β¨required_flagsβ Optional: the required MSI flags of the parent MSI domain π¦chip_flagsβ Optional: picks which MSI chip callbacks get updated with defaults insidemsi_lib_init_dev_msi_infoπ₯bus_select_tokenβ Optional: the bus token of the real parent domain, used forirq_domain::selectπbus_select_maskβ Optional: a mask of supportedBUS_DOMAINs, also forirq_domain::selectπprefixβ Optional: a prefix for the domain name and the chip name πinit_dev_msi_infoβ Required: the callback for MSI parent domains π it sets up the parent-domain-specific domain flags, the domain ops, and the interrupt chip callbacks whenever a per-device domain gets created. like, it's the moment the per-device domain is born and this function does its hair πββοΈ
π¦ SEE ALSO π¦
everything's connected, iykyk π β the kernel file ./include/linux/msi.h and this whole friend group:
struct msi_msg(9), struct pci_msi_desc(9), union msi_domain_cookie(9), struct msi_desc_data(9), struct msi_desc(9), struct msi_dev_domain(9), msi_first_desc(9), msi_domain_for_each_desc(9), msi_for_each_desc(9), msi_msg_set_addr(9), msi_insert_msi_desc(9), msi_free_msi_descs_range(9), msi_free_msi_descs(9), struct msi_domain_ops(9), struct msi_domain_info(9), struct msi_domain_template(9) π«Ά
ngl the Required vs Optional tags are load-bearing β if you skip a required one it's not a vibe, it's a bug π
okay that's the whole page, go off π
β sign-off time, bestie π this one comes to you from ./include/linux, dated October 2026, and it's filed under struct msi_parent_ops(9). slay π
β¨
π¦ 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