irq_domain_...ct_hierarchy(9)
π irq_domain_disconnect_hierarchy(9) π
okay bestie, welcome to the Kernel API Manual π
this one's a lil deep-cut from ./kernel/irq/irqdomain.c and honestly it's giving "surgical vibes only" β let's get into it β¨
β¨ NAME β¨
irq_domain_disconnect_hierarchy β marks the first unused level of a hierarchy as, like, not it π«Ά
β¨ SYNOPSIS β¨
int irq_domain_disconnect_hierarchy (struct irq_domain *domain ,
unsigned int virq );
πΈ ARGUMENTS πΈ
domainβ the IRQ domain whose hierarchy is getting disconnected, bestie. this is the one we're trimming βοΈvirqβ the IRQ number where the hierarchy is gonna be trimmed. yes, that virq π
π DESCRIPTION π
so what it does is mark the virq level that belongs to domain as disconnected. like officially, on the record, no takebacks π
and here's the mood killer: it returns -EINVAL if virq doesn't have a valid irq_data pointing to domain. so if your pointers aren't pointing, it's gonna tell you π
the only use for this is being able to trim levels of a hierarchy that don't have any real meaning for this interrupt β the kinda levels the driver itself marks as such from its .alloc callback. so yeah, driver said "this level is fake, cut it", and this function is the scissors π§ββοΈ
π SEE ALSO π
the whole friend group lives in the kernel file ./kernel/irq/irqdomain.c π¦ so go say hi to:
__irq_domain_alloc_fwnode(9)irq_domain_free_fwnode(9)irq_domain_instantiate(9)irq_domain_remove(9)irq_domain_create_simple(9)irq_find_matching_fwspec(9)irq_set_default_domain(9)irq_get_default_domain(9)irq_create_direct_mapping(9)irq_create_mapping_affinity(9)irq_dispose_mapping(9)__irq_resolve_mapping(9)irq_domain_xlate_onecell(9)irq_domain_xlate_twocell(9)irq_domain_xlate_twothreecell(9)irq_domain_xlate_onetwocell(9)irq_domain_translate_onecell(9)irq_domain_translate_twocell(9)irq_domain_translate_twothreecell(9)irq_domain_reset_irq_data(9)irq_domain_get_irq_data(9)irq_domain_set_hwirq_and_chip(9)irq_domain_set_info(9)irq_domain_free_irqs_common(9)irq_domain_free_irqs_top(9)__irq_domain_alloc_irqs(9)irq_domain_push_irq(9)irq_domain_pop_irq(9)irq_domain_free_irqs(9)irq_domain_alloc_irqs_parent(9)irq_domain_free_irqs_parent(9)irq_domain_activate_irq(9)irq_domain_deactivate_irq(9)
ngl, this one's niche but iconic β trimming dead hierarchy levels is main character energy if i've ever seen it π₯ just don't go expecting it to fix a badirq_data, it will simply return-EINVALand leave you on read π
okay that's the whole page, mwah π this came out of ./kernel/irq and it's dated October 2026 β so, like, future-core of you to be reading it fr fr πβπ
π¦ 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