Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

irqchip/apple-aic: Drop support for custom PMU irq partitions

Similarly to what has been done for GICv3, drop the irq partitioning
support from the AIC driver, effectively merging the two per-cpu interrupts
for the PMU.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Will Deacon <will@kernel.org>
Reviewed-by: Sven Peter <sven@kernel.org>
Link: https://patch.msgid.link/20251020122944.3074811-23-maz@kernel.org

authored by

Marc Zyngier and committed by
Thomas Gleixner
7443813f 64b9738e

+7 -21
+7 -21
drivers/irqchip/irq-apple-aic.c
··· 578 578 } 579 579 580 580 if ((read_sysreg_s(SYS_IMP_APL_PMCR0_EL1) & (PMCR0_IMODE | PMCR0_IACT)) == 581 - (FIELD_PREP(PMCR0_IMODE, PMCR0_IMODE_FIQ) | PMCR0_IACT)) { 582 - int irq; 583 - if (cpumask_test_cpu(smp_processor_id(), 584 - &aic_irqc->fiq_aff[AIC_CPU_PMU_P]->aff)) 585 - irq = AIC_CPU_PMU_P; 586 - else 587 - irq = AIC_CPU_PMU_E; 581 + (FIELD_PREP(PMCR0_IMODE, PMCR0_IMODE_FIQ) | PMCR0_IACT)) 588 582 generic_handle_domain_irq(aic_irqc->hw_domain, 589 - AIC_FIQ_HWIRQ(irq)); 590 - } 583 + AIC_FIQ_HWIRQ(AIC_CPU_PMU_P)); 591 584 592 585 if (static_branch_likely(&use_fast_ipi) && 593 586 (FIELD_GET(UPMCR0_IMODE, read_sysreg_s(SYS_IMP_APL_UPMCR0_EL1)) == UPMCR0_IMODE_FIQ) && ··· 625 632 handle_fasteoi_irq, NULL, NULL); 626 633 irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(irq))); 627 634 } else { 628 - int fiq = FIELD_GET(AIC_EVENT_NUM, hw); 629 - 630 - switch (fiq) { 631 - case AIC_CPU_PMU_P: 632 - case AIC_CPU_PMU_E: 633 - irq_set_percpu_devid_partition(irq, &ic->fiq_aff[fiq]->aff); 634 - break; 635 - default: 636 - irq_set_percpu_devid(irq); 637 - break; 638 - } 639 - 635 + irq_set_percpu_devid(irq); 640 636 irq_domain_set_info(id, irq, hw, &fiq_chip, id->host_data, 641 637 handle_percpu_devid_irq, NULL, NULL); 642 638 } ··· 714 732 break; 715 733 } 716 734 } 735 + 736 + /* Merge the two PMUs on a single interrupt */ 737 + if (*hwirq == AIC_CPU_PMU_E) 738 + *hwirq = AIC_CPU_PMU_P; 717 739 break; 718 740 default: 719 741 return -EINVAL;