msi_domain_for_each_desc(9)
π msi_domain_for_each_desc π
Okay so bestie, welcome to the msi_domain_for_each_desc(9) page β it's a kernel API manual moment, and it's lowkey iconic. This is the function that lets you iterate the MSI descriptors in a specific domain, and the way that it just... walks them? Obsessed. π¦
β¨ NAME β¨
msi_domain_for_each_desc β iterate the MSI descriptors in a specific domain π
πΈ SYNOPSIS πΈ
msi_domain_for_each_desc (desc , dev , domid , filter );
π ARGUMENTS π
descβ astruct msi_descpointer, and it's your iterator, your little main character doing the walking πΆββοΈβ¨devβ astruct devicepointer, i.e. the device you're iterating over, no capdomidβ the id of the interrupt domain that should be walked. Like, this is the domain we're strolling through πfilterβ the filter for descriptor selection, so you only get the descriptors you actually want π―
π NOTES π
- π¨ The loop must be protected with a
msi_lock_descs/msi_unlock_descspair. Like, genuinely must. Do not skip this, fr fr. - β It is safe to remove a retrieved MSI descriptor in the loop. Slay, that's convenient.
- π The kernel file lives at
./include/linux/msi.hβ iykyk.
β SEE ALSO β
Kernel file ./include/linux/msi.h plus all these besties: 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_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), struct msi_parent_ops(9) π
That's the whole page, gorgeous β go forth and iterate responsibly π«Ά
This cutie came out of ./include/linux with the October 2026 date stamp, bestie β mwah, mwah, see you in the next manpage π
π
π¦ 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