From 0e27242ef383ba09ed342dd6910bae9f1289591d Mon Sep 17 00:00:00 2001 From: LibXZR Date: Sat, 22 May 2021 14:06:24 +0800 Subject: [PATCH] Revert "genirq/irqdomain: Don't try to free an interrupt that has no mapping" * This is retard. An interrupt does not have a permanent virq. The virq of an irq may be changed after the free of other irqs. * This is causing problems for msm_msi_irq_domain to free all the irqs that it allocated. * Fix unrecoverable modem crash. This reverts commit d1874e36cb3d00ba53f9e7bc3ca58d3058659cee. Change-Id: I831083118d6a7c12d43f2fa2ef01bdd27159dac8 Signed-off-by: LibXZR Signed-off-by: Richard Raya --- kernel/irq/irqdomain.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index cf1be39687b9..97528b960b21 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -1375,15 +1375,8 @@ static void irq_domain_free_irqs_hierarchy(struct irq_domain *domain, unsigned int irq_base, unsigned int nr_irqs) { - unsigned int i; - - if (!domain->ops->free) - return; - - for (i = 0; i < nr_irqs; i++) { - if (irq_domain_get_irq_data(domain, irq_base + i)) - domain->ops->free(domain, irq_base + i, 1); - } + if (domain->ops->free) + domain->ops->free(domain, irq_base, nr_irqs); } int irq_domain_alloc_irqs_hierarchy(struct irq_domain *domain,