On Thu, 2 Nov 2017, Sagi Grimberg wrote: > > > This wasn't to start a debate about which allocation method is the > > perfect solution. I am perfectly happy with the new default, the part > > that is broken is to take away the user's option to reassign the > > affinity. That is a bug and it needs to be fixed! > > Well, > > I would really want to wait for Thomas/Christoph to reply, but this > simple change fixed it for me: > -- > diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c > index 573dc52b0806..eccd06be5e44 100644 > --- a/kernel/irq/manage.c > +++ b/kernel/irq/manage.c > @@ -146,8 +146,7 @@ bool irq_can_set_affinity_usr(unsigned int irq) > { > struct irq_desc *desc = irq_to_desc(irq); > > - return __irq_can_set_affinity(desc) && > - !irqd_affinity_is_managed(&desc->irq_data); > + return __irq_can_set_affinity(desc);
Which defeats the whole purpose of the managed facility, which is _not_ to break the affinities on cpu offline and bring the interrupt back on the CPU when it comes online again. What I can do is to have a separate flag, which only uses the initial distribution mechanism, but I really want to have Christophs opinion on that. Thanks, tglx