On Mon, Oct 05 2020 at 16:28, David Woodhouse wrote: > +/** > + * irq_domain_set_affinity - Set maximum CPU affinity for domain > + * @parent: Domain to set affinity for > + * @affinity: Pointer to cpumask, consumed by domain > + * > + * Sets the maximal set of CPUs to which interrupts in this domain may > + * be delivered. Must only be called after creation, before any interrupts > + * have been in the domain. > + * > + * This function retains a pointer to the cpumask which is passed in. > + */ > +int irq_domain_set_affinity(struct irq_domain *domain, > + const struct cpumask *affinity) > +{ > + if (cpumask_empty(affinity)) > + return -EINVAL; > + domain->max_affinity = affinity; > + return 0; > +} > +EXPORT_SYMBOL_GPL(irq_domain_set_affinity); What the heck? Why does this need a setter function which is exported? So that random driver writers can fiddle with it? The affinity mask restriction of an irq domain is already known when the domain is created. Thanks, tglx