|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/7] x86/smp: do not use shorthand IPI destinations in CPU hot{,un}plug contexts
On 12.06.2024 10:09, Roger Pau Monné wrote:
> On Tue, Jun 11, 2024 at 09:42:39AM +0200, Jan Beulich wrote:
>> On 10.06.2024 16:20, Roger Pau Monne wrote:
>>> Due to the current rwlock logic, if the CPU calling get_cpu_maps() does so
>>> from
>>> a cpu_hotplug_{begin,done}() region the function will still return success,
>>> because a CPU taking the rwlock in read mode after having taken it in write
>>> mode is allowed. Such behavior however defeats the purpose of
>>> get_cpu_maps(),
>>
>> I'm not happy to see you still have this claim here. The behavior may (appear
>> to) defeat the purpose here, but as expressed previously I don't view that as
>> being a general pattern.
>
> Right. What about replacing the paragraph with:
>
> "Due to the current rwlock logic, if the CPU calling get_cpu_maps() does so
> from
> a cpu_hotplug_{begin,done}() region the function will still return success,
> because a CPU taking the rwlock in read mode after having taken it in write
> mode is allowed. Such corner case makes using get_cpu_maps() alone
> not enough to prevent using the shorthand in CPU hotplug regions."
Thanks.
> I think the rest is of the commit message is not controversial.
Indeed.
>>> --- a/xen/arch/x86/smp.c
>>> +++ b/xen/arch/x86/smp.c
>>> @@ -88,7 +88,7 @@ void send_IPI_mask(const cpumask_t *mask, int vector)
>>> * the system have been accounted for.
>>> */
>>> if ( system_state > SYS_STATE_smp_boot &&
>>> - !unaccounted_cpus && !disabled_cpus &&
>>> + !unaccounted_cpus && !disabled_cpus && !cpu_in_hotplug_context()
>>> &&
>>> /* NB: get_cpu_maps lock requires enabled interrupts. */
>>> local_irq_is_enabled() && (cpus_locked = get_cpu_maps()) &&
>>> (park_offline_cpus ||
>>
>> Along with changing the condition you also want to update the comment to
>> reflect the code adjustment.
>
> I've assumed the wording in the commet that says: "no CPU hotplug or
> unplug operations are taking place" would already cover the addition
> of the !cpu_in_hotplug_context() check.
Hmm, yes, you're right. Just needs a release-ack then to go in (with the
description adjustment).
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |