On 2025-06-05 18:50:27 [+0200], Petr Pavlu wrote: > On 6/5/25 5:54 PM, Sebastian Andrzej Siewior wrote: > > On 2025-06-05 15:44:23 [+0200], Petr Pavlu wrote: > >> Isn't this broken earlier by "Don't relocate non-allocated regions in > >> modules." > >> (pre-Git, [1])? > > > > Looking further back into the history, we have > > 21af2f0289dea ("[PATCH] per-cpu support inside modules (minimal)") > > > > which does > > > > + if (pcpuindex) { > > + /* We have a special allocation for this section. */ > > + mod->percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size, > > + > > sechdrs[pcpuindex].sh_addralign); > > + if (!mod->percpu) { > > + err = -ENOMEM; > > + goto free_mod; > > + } > > + sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC; > > + } > > > > so this looks like the origin. > > This patch added the initial per-cpu support for modules. The relocation > handling at that point appears correct to me. I think it's the mentioned patch > "Don't relocate non-allocated regions in modules" that broke it.
Ach, it ignores that bit. Okay then. > It seems logical to me that the SHF_ALLOC flag is removed for the percpu > section > since it isn't directly allocated by the regular process. This is consistent > with what the module loader does in other similar cases. I could also > understand > keeping the flag and explicitly skipping the layout and allocate process for > the > section. However, adjusting the flag back and forth to trigger the right code > paths in between seems fragile to me and harder to maintain if we need to > shuffle things around in the future. Okay. Let me add this exception later on instead of adding the bit back. Sebastian