Bläddra i källkod

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 år sedan
förälder
incheckning
e26d537266
2 ändrade filer med 14 tillägg och 0 borttagningar
  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);