Re: [PATCH] genirq: Discard cpumask of irqaffinity= boot parameter if parsing fails
Radu Rendec <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Sat, 2026-08-22 at 18:05 +0200, Lukas Beckmann wrote: > irq_affinity_setup() ignores the return value of cpulist_parse(). This > can result in using a "half parsed" cpulist. E.g. on a system with 8 > cores, the parameter "irqaffinity=0,1,6-10,4" would result in using only > CPU 0 and 1, since the parsing fails at 6-10. Other boot parameters > which take a cpulist (e.g. isolcpus=, workqueue.unbound_cpus=) already > handle this by falling back to a default. > > Check the return value of cpulist_parse() and let > init_irq_default_affinity() set the default in early_irq_init() > later, if parsing fails. > > Signed-off-by: Lukas Beckmann <[email protected]> > --- > kernel/irq/irqdesc.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c > index 3a818f07a101..7cbcc3fb9e6d 100644 > --- a/kernel/irq/irqdesc.c > +++ b/kernel/irq/irqdesc.c > @@ -28,7 +28,15 @@ static struct lock_class_key irq_desc_lock_class; > static int __init irq_affinity_setup(char *str) > { > alloc_bootmem_cpumask_var(&irq_default_affinity); > - cpulist_parse(str, irq_default_affinity); > + if (cpulist_parse(str, irq_default_affinity) < 0) { > + /* > + * Clear the mask so that init_irq_default_affinity() > + * defaults it later. > + */ > + cpumask_clear(irq_default_affinity); > + pr_warn("irqaffinity: incorrect CPU range, using default\n"); > + return 1; > + } > /* > * Set at least the boot cpu. We don't want to end up with > * bugreports caused by random commandline masks > > base-commit: 1ad6d4a722f509128038f9c85c6a122a382179fe Reviewed-by: Radu Rendec <[email protected]>