On Mon, 2022-01-31 at 14:59 +0100, Borislav Petkov wrote: > On Sat, Jan 29, 2022 at 12:04:19PM +0000, David Woodhouse wrote: > > I've rebased and pushed to > > https://git.infradead.org/users/dwmw2/linux.git/shortlog/refs/heads/parallel-5.17 > > > > > > I'll do some more testing and repost the series during next week. The > > win is slightly more modest than the original patch sets because it now > > only parallelises x86/cpu:kick. I'm going to do more careful review and > > testing before doing the same for x86/cpu:wait-init in a later series. > > You can see that coming together in the git tree but I'm only going to > > post up to the 'Serialise topology updates' patch again for now. > > Btw, Mr. Cooper points out a very important aspect and I don't know > whether you've verified this already or whether this is not affected > by your series ... yet. In any case it should be checked: microcode > loading. > > See __reload_late() and all that dance we do to keep SMT siblings do > nothing at the same time while updating microcode. > > With the current boot order, the APs should all do nothing so they won't > need that sync for early loading - load_ucode_{ap,bsp} - but I don't > know if you're changing that order with the parallel startup. > > If you do, you'll probably need such syncing for the early loading > too... Thanks. It looks like that is only invoked after boot, with a write to /sys/devices/system/cpu/microcode/reload. My series is only parallelising the initial bringup at boot time, so it shouldn't make any difference. However... it does look like there's nothing preventing a sibling being brought online *while* the dance you mention above is occurring. Shouldn't __reload_late() take the device_hotplug_lock to prevent that?