Message ID | 20241223125134.57885-1-yangyicong@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drivers/perf: hisi: Set correct IRQ affinity for PMUs with no association | expand |
On Mon, 23 Dec 2024 20:51:34 +0800 Yicong Yang <yangyicong@huawei.com> wrote: > From: Yicong Yang <yangyicong@hisilicon.com> > > For PMUs with no association, the hisi_pmu->on_cpu is initialized > according to the NUMA locality but use a wrong CPU for the interrupt > affinity. The CPU selected from cpumask_local_spread() can be different > from the CPU by the cpuhp callback. Fix this by setting the IRQ affinity > to hisi_pmu->on_cpu. > > Fixes: 6cd137088fdf ("drivers/perf: hisi: Refactor the detection of associated CPUs") > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/perf/hisilicon/hisi_uncore_pmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c > index 83bdc9c31367..ef058b1dd509 100644 > --- a/drivers/perf/hisilicon/hisi_uncore_pmu.c > +++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c > @@ -510,7 +510,7 @@ int hisi_uncore_pmu_online_cpu(unsigned int cpu, struct hlist_node *node) > return 0; > > hisi_pmu->on_cpu = cpumask_local_spread(0, dev_to_node(hisi_pmu->dev)); > - WARN_ON(irq_set_affinity(hisi_pmu->irq, cpumask_of(cpu))); > + WARN_ON(irq_set_affinity(hisi_pmu->irq, cpumask_of(hisi_pmu->on_cpu))); > return 0; > } >
diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c index 83bdc9c31367..ef058b1dd509 100644 --- a/drivers/perf/hisilicon/hisi_uncore_pmu.c +++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c @@ -510,7 +510,7 @@ int hisi_uncore_pmu_online_cpu(unsigned int cpu, struct hlist_node *node) return 0; hisi_pmu->on_cpu = cpumask_local_spread(0, dev_to_node(hisi_pmu->dev)); - WARN_ON(irq_set_affinity(hisi_pmu->irq, cpumask_of(cpu))); + WARN_ON(irq_set_affinity(hisi_pmu->irq, cpumask_of(hisi_pmu->on_cpu))); return 0; }