Browse Source

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
Jia Ding 4 years ago
parent
commit
e26d537266
2 changed files with 14 additions and 0 deletions
  1. 12 0
      hif/src/hif_exec.h
  2. 2 0
      hif/src/pcie/if_pci.c

+ 12 - 0
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
 

+ 2 - 0
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);