|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.19] xen/x86: limit interrupt movement done by fixup_irqs()
On 16.05.2024 17:56, Roger Pau Monné wrote:
> On Thu, May 16, 2024 at 05:00:54PM +0200, Jan Beulich wrote:
>> On 16.05.2024 15:22, Roger Pau Monne wrote:
>>> @@ -2576,7 +2576,12 @@ void fixup_irqs(const cpumask_t *mask, bool verbose)
>>> release_old_vec(desc);
>>> }
>>>
>>> - if ( !desc->action || cpumask_subset(desc->affinity, mask) )
>>> + /*
>>> + * Avoid shuffling the interrupt around if it's assigned to a CPU
>>> set
>>> + * that's all covered by the requested affinity mask.
>>> + */
>>> + cpumask_and(affinity, desc->arch.cpu_mask, &cpu_online_map);
>>> + if ( !desc->action || cpumask_subset(affinity, mask) )
>>> {
>>> spin_unlock(&desc->lock);
>>> continue;
>>[...]
>> In
>> which case cpumask_subset() is going to always return true with your
>> change in place, if I'm not mistaken. That seems to make your change
>> questionable. Yet with that I guess I'm overlooking something.)
>
> I might we wrong, but I think you are missing that the to be offlined
> CPU has been removed from cpu_online_map by the time it gets passed
> to fixup_irqs().
Just on this part (I'll need to take more time to reply to other parts):
No, I've specifically paid attention to that fact. Yet for this particular
observation of mine is doesn't matter. If mask == &cpu_online_map, then
no matter what is in cpu_online_map
cpumask_and(affinity, desc->arch.cpu_mask, &cpu_online_map);
will mask things down to a subset of cpu_online_map, and hence
if ( !desc->action || cpumask_subset(affinity, mask) )
(effectively being
if ( !desc->action || cpumask_subset(affinity, &cpu_online_map) )
) is nothing else than
if ( !desc->action || true )
. Yet that doesn't feel quite right.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |