mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
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
This commit is contained in:
parent
64b9738eaa
commit
7443813f10
|
|
@ -578,16 +578,9 @@ static void __exception_irq_entry aic_handle_fiq(struct pt_regs *regs)
|
|||
}
|
||||
|
||||
if ((read_sysreg_s(SYS_IMP_APL_PMCR0_EL1) & (PMCR0_IMODE | PMCR0_IACT)) ==
|
||||
(FIELD_PREP(PMCR0_IMODE, PMCR0_IMODE_FIQ) | PMCR0_IACT)) {
|
||||
int irq;
|
||||
if (cpumask_test_cpu(smp_processor_id(),
|
||||
&aic_irqc->fiq_aff[AIC_CPU_PMU_P]->aff))
|
||||
irq = AIC_CPU_PMU_P;
|
||||
else
|
||||
irq = AIC_CPU_PMU_E;
|
||||
(FIELD_PREP(PMCR0_IMODE, PMCR0_IMODE_FIQ) | PMCR0_IACT))
|
||||
generic_handle_domain_irq(aic_irqc->hw_domain,
|
||||
AIC_FIQ_HWIRQ(irq));
|
||||
}
|
||||
AIC_FIQ_HWIRQ(AIC_CPU_PMU_P));
|
||||
|
||||
if (static_branch_likely(&use_fast_ipi) &&
|
||||
(FIELD_GET(UPMCR0_IMODE, read_sysreg_s(SYS_IMP_APL_UPMCR0_EL1)) == UPMCR0_IMODE_FIQ) &&
|
||||
|
|
@ -632,18 +625,7 @@ static int aic_irq_domain_map(struct irq_domain *id, unsigned int irq,
|
|||
handle_fasteoi_irq, NULL, NULL);
|
||||
irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(irq)));
|
||||
} else {
|
||||
int fiq = FIELD_GET(AIC_EVENT_NUM, hw);
|
||||
|
||||
switch (fiq) {
|
||||
case AIC_CPU_PMU_P:
|
||||
case AIC_CPU_PMU_E:
|
||||
irq_set_percpu_devid_partition(irq, &ic->fiq_aff[fiq]->aff);
|
||||
break;
|
||||
default:
|
||||
irq_set_percpu_devid(irq);
|
||||
break;
|
||||
}
|
||||
|
||||
irq_set_percpu_devid(irq);
|
||||
irq_domain_set_info(id, irq, hw, &fiq_chip, id->host_data,
|
||||
handle_percpu_devid_irq, NULL, NULL);
|
||||
}
|
||||
|
|
@ -732,6 +714,10 @@ static int aic_irq_domain_translate(struct irq_domain *id,
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Merge the two PMUs on a single interrupt */
|
||||
if (*hwirq == AIC_CPU_PMU_E)
|
||||
*hwirq = AIC_CPU_PMU_P;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user