Hi,
I have been working on a interrupt controller driver that uses tree
based mapping for its domain (irq_domain_add_tree(..)).
If I understand correctly, the clients get a mapping when they call
platform_get_irq(..).
However, after these clients are removed (rmmod), when I try to remove
the interrupt controller driver where it calls irq_domain_remove(..), I
hit this warning from kernel/kernel/irq/irqdomain.c::
irq_domain_remove(..)
[WARN_ON(!radix_tree_empty(&domain->revmap_tree));]-
WARNING: CPU: 0 PID: 238 at /kernel/kernel/irq/irqdomain.c:246
irq_domain_remove+0x84/0x98
Also, I see that the requested IRQs by the clients are still present (in
/proc/interrupts) even after they had been removed.
Hence, I just wanted to know how to handle this warning. Should the
client clean up by calling irq_dispose_mapping(..) or is it the
responsibility of the interrupt controller driver to dispose the
mappings one by one?
Regards,
Prakruthi Deepak Heragu