From e26d5372666b23ed85e2d18ba830d02aeb9478da Mon Sep 17 00:00:00 2001 From: Jia Ding Date: Fri, 28 Aug 2020 20:54:13 +0800 Subject: [PATCH] qcacmn: Properly remove affinity hint for CE irqs IRQ affinity for CE IRQs has been set to gold cores. But affinity hint is not removed when freeing CE irqs. Therefore remove affinity hint for CE irqs before freeing them. Change-Id: I7385a90955bc7e357badcd784e40d89022542d1a CRs-Fixed: 2765373 --- hif/src/hif_exec.h | 12 ++++++++++++ hif/src/pcie/if_pci.c | 2 ++ 2 files changed, 14 insertions(+) diff --git a/hif/src/hif_exec.h b/hif/src/hif_exec.h index a818d5eafaa0..8135c1a7dae6 100644 --- a/hif/src/hif_exec.h +++ b/hif/src/hif_exec.h @@ -184,6 +184,14 @@ void hif_pci_irq_set_affinity_hint( void hif_pci_ce_irq_set_affinity_hint( struct hif_softc *scn); +/** + * hif_pci_ce_irq_remove_affinity_hint() - remove affinity for the irq + * @irq: irq number to remove affinity from + */ +static inline void hif_pci_ce_irq_remove_affinity_hint(int irq) +{ + hif_irq_affinity_remove(irq); +} #else static inline void hif_pci_irq_set_affinity_hint( struct hif_exec_context *hif_ext_group) @@ -194,6 +202,10 @@ static inline void hif_pci_ce_irq_set_affinity_hint( struct hif_softc *scn) { } + +static inline void hif_pci_ce_irq_remove_affinity_hint(int irq) +{ +} #endif /* ifdef HIF_CPU_PERF_AFFINE_MASK */ #endif diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c index 8be6a5bac567..bebaf5cdf614 100644 --- a/hif/src/pcie/if_pci.c +++ b/hif/src/pcie/if_pci.c @@ -2090,6 +2090,8 @@ static int hif_ce_srng_msi_free_irq(struct hif_softc *scn) msi_data = (ce_id % msi_data_count) + msi_irq_start; irq = pld_get_msi_irq(scn->qdf_dev->dev, msi_data); + hif_pci_ce_irq_remove_affinity_hint(irq); + hif_debug("%s: (ce_id %d, msi_data %d, irq %d)", __func__, ce_id, msi_data, irq);