Re: [PATCH 1/2] x86/cpu/topology: don't write to immutable cpu_present_mask

From: Peter Zijlstra
Date: Tue Apr 09 2024 - 05:24:44 EST


On Tue, Apr 09, 2024 at 10:42:13AM +0200, Ingo Molnar wrote:
>
> * Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>
> > On Sun, Apr 07 2024 at 18:26, Alexey Dobriyan wrote:
> > > Workaround the following oops:
> > >
> > > topology_hotplug_apic
> > > topo_set_cpuids
> > > set_cpu_possible(cpu, true);
> > > // write to __ro_after_init section after init
> >
> > Duh, yes.
> >
> > > adobriyan: I'm not sure what's going on, can it set unset bit here?
> > > If not, then why does it repeat the job and set already set bits.
> > >
> > > Anyhow, let's not oops peoples' machines for now.
> >
> > Adding a bandaid to paper over the non-understood real problem is
> > definitely not a good plan. I take this patch as a bug report.
> >
> > Proper fix below.
>
> BTW., independently of the fix, warning about a too late set_cpu_possible()
> might still make sense - clearly it *can* be called too late by
> architecture init code :-)

Make the function __init ? Then it goes away right when the data becomes
RO.