Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [PATCH] genirq/proc: Show percpu irq affinity | Date | Thu, 13 Aug 2020 10:27:53 +0200 |
| |
Yunfeng Ye <yeyunfeng@huawei.com> writes:
> When the "affinity=" cmdline parameter is configured,
There is no such parameter.
> the interrupt affinity displayed in the proc directory does not match > with that of the the percu interrupt, and the percu interrupt uses > desc->percu_affinity.
And when the non-existing parameter is not on the command line then irq->affinity is showing the correct value magically?
Definitely not: It's unconditionally showing irq->affinity and that is pretty unlikely to match irq->percpu_affinity in any case.
> diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c > index 32c071d7bc03..b9d0fa87b4b4 100644 > --- a/kernel/irq/proc.c > +++ b/kernel/irq/proc.c > @@ -52,6 +52,8 @@ static int show_irq_affinity(int type, struct seq_file *m) > case AFFINITY: > case AFFINITY_LIST: > mask = desc->irq_common_data.affinity; > + if (irqd_is_per_cpu(&desc->irq_data)) > + mask = desc->percpu_affinity;
This breaks all architecture which mark interrupts as per CPU without using the partition mechanism resulting in a NULL pointer dereference.
Thanks,
tglx
| |