msi_parent_i...dev_msi_info(9)
π NAME π
okay so bestie, this is the Kernel API Manual page for msi_parent_init_dev_msi_info, and the header is out here looking like msi_parent_i...dev_msi_info(9) because truncation said slay π
. Its whole mission? Delegate initialization of device MSI info down in the domain hierarchy. That's the name, that's the vibe, no cap. π«Ά
β¨ SYNOPSIS β¨
bool msi_parent_init_dev_msi_info (struct device *dev , struct
irq_domain *domain , struct irq_domain *msi_parent_domain , struct
msi_domain_info *msi_child_info );
π ARGUMENTS π
devβ the device for which the domain should be created. like, the main character device in question πdomainβ the domain in the hierarchy this op is being called on.msi_parent_domainβ theIRQ_DOMAIN_FLAG_MSI_PARENTdomain for the child to be created.msi_child_infoβ the MSI domain info of theIRQ_DOMAIN_FLAG_MSI_DEVICEdomain to be created.
π₯ RETURN π₯
true on success, false otherwise. that's it. binary slay. β¨
π§ DESCRIPTION π§
This is the most complex problem of per device MSI domains and the underlying interrupt domain hierarchy β like the final boss of domain setup, fr fr. π
The device domain to be initialized requests the broadest feature set possible, and the underlying domain hierarchy puts restrictions on it.
That's trivial for a simple parent->child relationship, but it gets interesting with an intermediate domain: root->parent->child. The intermediate 'parent' can expand the capabilities which the 'root' domain is providing. So that creates a classic hen and egg problem: Which entity is doing the restrictions/expansions? π£
One solution is to let the root domain handle the initialization β that's why there is the domain and the msi_parent_domain pointer. periodt. π
π SEE ALSO π
the whole gang is here, bestie:
- Kernel file
./kernel/irq/msi.c struct msi_device_data(9)struct msi_ctrl(9)msi_alloc_desc(9)msi_domain_insert_msi_desc(9)msi_domain_free_msi_descs_range(9)msi_domain_add_simple_msi_descs(9)msi_setup_device_data(9)__msi_lock_descs(9)__msi_unlock_descs(9)msi_domain_first_desc(9)msi_next_desc(9)msi_domain_get_virq(9)msi_device_populate_sysfs(9)msi_device_destroy_sysfs(9)msi_domain_set_affinity(9)msi_create_irq_domain(9)msi_create_parent_irq_domain(9)msi_create_device_irq_domain(9)msi_remove_device_irq_domain(9)msi_match_device_irq_domain(9)msi_domain_alloc_irqs_range_locked(9)msi_domain_alloc_irqs_range(9)msi_domain_alloc_irqs_all_locked(9)msi_domain_alloc_irq_at(9)msi_device_domain_alloc_wired(9)msi_domain_free_irqs_range_locked(9)msi_domain_free_irqs_range(9)msi_domain_free_irqs_all_locked(9)msi_domain_free_irqs_all(9)msi_device_domain_free_wired(9)msi_get_domain_info(9)msi_device_has_isolated_msi(9)
mwah π β this page came from ./kernel/irq, stamped October 2026, and signed msi_parent_i...dev_msi_info(9). bye bestie, go delegate those MSI infos π
π¦ 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