Re: [PATCH 1/2] torture: use for_each_present() loop in torture_online_all()

From: Sven Schnelle
Date: Tue Nov 15 2022 - 01:56:10 EST


Hi Paul,

"Paul E. McKenney" <paulmck@xxxxxxxxxx> writes:

> On Mon, Nov 14, 2022 at 04:35:06PM +0100, Sven Schnelle wrote:
>> "Paul E. McKenney" <paulmck@xxxxxxxxxx> writes:
>>
>> > On Fri, Nov 11, 2022 at 01:51:24PM +0100, Sven Schnelle wrote:
>> >> A CPU listed in the possible mask doesn't have to be present, in
>> >> which case it would crash the kernel in torture_online_all().
>> >> To prevent this use a for_each_present() loop.
>> >>
>> >> Signed-off-by: Sven Schnelle <svens@xxxxxxxxxxxxx>
>> >
>> > Looks good to me! Any reason for no mailing list on CC?
>>
>> No, my fault. I setup get_maintainer.pl to be called from git
>> send-email, but looks like i did it wrong :-)
>
> Been there, done that! ;-)
>
>> > Ah, and any synchronization required in case it is possible for a CPU
>> > to leave the cpu_present_mask? Or can they only be added?
>>
>> Hmm... I think the main question is, whether it is ok for a cpu to be
>> removed from the system when rcutorture is running? In both cases it
>> would disappear from the cpu online mask, so i don't think the patch
>> would change the behaviour. But i can check and send additional patches
>> if there are other places that needs adjustment.
>
> Yes, rcutorture has lower-level checks for CPUs being hotplugged
> behind its back. Which might be sufficient. But this patch is in
> response to something bad happening if the CPU is also not present in
> the cpu_present_mask. Would that same bad thing happen if rcutorture saw
> the CPU in cpu_online_mask, but by the time it attempted to CPU-hotplug
> it, that CPU was gone not just from cpu_online_mask, but also from
> cpu_present_mask?
>
> Or are CPUs never removed from cpu_present_mask?

In the current implementation CPUs can only be added to the
cpu_present_mask, but never removed. This might change in the future
when we get support from firmware for that, but the current s390 code
doesn't do that.

Regards
Sven