Le Mon, Oct 28, 2024 at 04:25:15PM +0000, Will Deacon a écrit : > > If nohz_full= isn't used then > > it's cpu_possible_mask). If there is a housekeeping CPU supporting el0 32bits > > then it will be disallowed to be ever offlined. But if the first mismatching > > CPU supporting el0 that pops up is not housekeeping then we may end up > > with that CPU disallowed to be offlined + later if a housekeeping CPU appears > > that also supports 32bits el0 will also be disallowed to be offlined. Ideally > > it should turn back the previous CPU to be offlinable but there may be > > other things that have forbidden that CPU to be offline so... > > I'd have thought the bigger problem would be if the set of nohz_full= > CPUs was defined as the set of CPUs that support 32-bit. In that case, > executing a 32-bit task will give the scheduler no choice but to run > the task on a !housekeeping core. Right. > > So perhaps we could turn this on its head and explicitly mark the first > 32-bit capable CPU as a housekeeping core when the mismatched mode is > enabled? We're already preventing CPU hotplug for the thing, so it's > "special" already. If that conflicts with the nohz_full_option, we can > emit a warning message that we're overriding it. I think that's ok, as > the user will have had to specify 'allow_mismatched_32bit_el0' as well. It's very complicated to revert a CPU once it is set as nohz_full. But we can retain a 32 bits capable nohz_full CPU from offlining until we finally find a non-nohz_full 2bits capable CPU. I was about to repost the whole kthread patchset but lemme post just the specific bits of interests here, it's "just" two patches. Thanks.