Its device will be removed after all events be freed. Undisarded events can lead to unpredictable behaviar.
Signed-off-by: Zhao Yuanyuan <yuanyuan.z...@hxt-semitech.com> --- drivers/irqchip/irq-gic-v3-its.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index db20e99..4fee008 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -2572,6 +2572,10 @@ static void its_irq_domain_free(struct irq_domain *domain, unsigned int virq, virq + i); u32 event = its_get_event_id(data); + /* Discard irq before free */ + if (irqd_is_activated(d)) + its_send_discard(its_dev, event); + /* Mark interrupt index as unused */ clear_bit(event, its_dev->event_map.lpi_map); -- 1.8.3.1