if (ret < 0)
                return ret;
 
-       ret = devm_request_threaded_irq(&pdev->dev,
-                                       pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ),
+       hisi_ptt->trace_irq = pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ);
+       ret = devm_request_threaded_irq(&pdev->dev, hisi_ptt->trace_irq,
                                        NULL, hisi_ptt_isr, 0,
                                        DRV_NAME, hisi_ptt);
        if (ret) {
                pci_err(pdev, "failed to request irq %d, ret = %d\n",
-                       pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ), ret);
+                       hisi_ptt->trace_irq, ret);
                return ret;
        }
 
         * core in event_function_local(). If CPU passed is offline we'll fail
         * here, just log it since we can do nothing here.
         */
-       ret = irq_set_affinity(pci_irq_vector(hisi_ptt->pdev, HISI_PTT_TRACE_DMA_IRQ),
-                                             cpumask_of(cpu));
+       ret = irq_set_affinity(hisi_ptt->trace_irq, cpumask_of(cpu));
        if (ret)
                dev_warn(dev, "failed to set the affinity of trace interrupt\n");
 
         * Also make sure the interrupt bind to the migrated CPU as well. Warn
         * the user on failure here.
         */
-       if (irq_set_affinity(pci_irq_vector(hisi_ptt->pdev, HISI_PTT_TRACE_DMA_IRQ),
-                                           cpumask_of(target)))
+       if (irq_set_affinity(hisi_ptt->trace_irq, cpumask_of(target)))
                dev_warn(dev, "failed to set the affinity of trace interrupt\n");
 
        hisi_ptt->trace_ctrl.on_cpu = target;
 
  * @pdev:         pci_dev of this PTT device
  * @tune_lock:    lock to serialize the tune process
  * @pmu_lock:     lock to serialize the perf process
+ * @trace_irq:    interrupt number used by trace
  * @upper_bdf:    the upper BDF range of the PCI devices managed by this PTT device
  * @lower_bdf:    the lower BDF range of the PCI devices managed by this PTT device
  * @port_filters: the filter list of root ports
        struct pci_dev *pdev;
        struct mutex tune_lock;
        spinlock_t pmu_lock;
+       int trace_irq;
        u32 upper_bdf;
        u32 lower_bdf;