Re: [PATCH 07/13] irqdomain: Add max_affinity argument to irq_domain_alloc_descs()
From: Thomas Gleixner <hidden>
Date: 2020-10-07 20:53:23
Also in:
kvm, linux-iommu
On Wed, Oct 07 2020 at 17:11, David Woodhouse wrote:
On 7 October 2020 16:57:36 BST, Thomas Gleixner [off-list ref] wrote:quoted
There is not lot's of nastiness.OK, but I think we do have to cope with the fact that the limit is dynamic, and a CPU might be added which widens the mask. I think that's fundamental and not x86-specific.
Yes, but it needs some thoughts vs. serialization against CPU hotplug.
The stability of that cpumask is architecture specific if the calling
context cannot serialize against CPU hotplug. The hot-unplug case is
less interesting because the mask does not shrink, it only get's wider.
That's why I want a callback instead of a pointer assignment and that
callback cannot return a pointer to something which can be modified
concurrently, it needs to update a caller provided mask so that the
result is at least consistent in itself.
It just occured to me that there is something which needs some more
thought vs. CPU hotunplug as well:
Right now we just check whether there are enough vectors available on
the remaining online CPUs so that the interrupts which have an
effective affinity directed to the outgoing CPU can be migrated away
(modulo the managed ones).
That check obviously needs to take the target CPU restrictions into
account to prevent that devices end up with no target at the end.
I bet there are some other interesting bits and pieces which need
some care...
Thanks,
tglx