msi_domain_a...range_locked(9)
π NAME π
okay so this is msi_domain_alloc_irqs_range_locked β it allocates interrupts from a MSI interrupt domain. that's the whole vibe. it's from the Kernel API Manual, bestie, and yes the header truncates the name all dramatically like msi_domain_a...range_locked(9) but the full glow-up name is the one up there βοΈ
β¨ SYNOPSIS β¨
int msi_domain_alloc_irqs_range_locked (struct device *dev , unsigned
int domid , unsigned int first , unsigned int last );
like, exactly that. character for character. don't come for me π«Ά
π ARGUMENTS π
devβ Pointer to device struct of the device for which the interrupts are allocated. it's giving "who is this for" main character energy πdomidβ Id of the interrupt domain to operate on. the domain's little ID badge πͺͺfirstβ First index to allocate (inclusive). inclusive, babes, meaning it counts π₯lastβ Last index to allocate (inclusive). also inclusive. the range is a closed set, no cap π
πΈ DESCRIPTION πΈ
okay so the big rule: this Must be invoked from within a msi_lock_descs / msi_unlock_descs pair. literally non-negotiable, you gotta be inside that lock sandwich or it's not it π
Use this for MSI irqdomains which implement their own descriptor allocation/free. like, they do their own thing, they're independent, they slay their own descriptors π
β RETURN β
0 on success or an error code. that's it. zero means we ate, anything else means something went sideways π
π¦ SEE ALSO π¦
the whole friend group, in order, no one left out:
./kernel/irq/msi.cβ Kernel file, the source of truth π§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_parent_init_dev_msi_info(9)msi_create_device_irq_domain(9)msi_remove_device_irq_domain(9)msi_match_device_irq_domain(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)
lowkey reminder bestie: if you're not holding thatmsi_lock_descs/msi_unlock_descspair, you're doing it wrong. it's giving "read the description again" π
and that's the page!! π source spot is ./kernel/irq, version/date is October 2026, and the manual is msi_domain_a...range_locked(9) β mwah, stan kernel docs, bye 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