David! On Thu, Feb 23 2023 at 11:07, David Woodhouse wrote: > On Wed, 2023-02-22 at 17:42 +0100, Thomas Gleixner wrote: >> The low hanging fruit which brings most is the identification/topology >> muck and the microcode loading. That needs to be addressed first anyway. > > Agreed, thanks. So the problem with microcode loading is that we must ensure that a HT sibling is not executing anything else than a trivial loop waiting for the update to complete. So something like this should work: 1) Kick all CPUs into life and let them run up to cpu_init() and retrieve only the topology information. 2) Wait for all CPUs to reach this point 3) Release all primary HT threads so they can load microcode in parallel. The secondary HT threads stay in the wait loop and are released once the primary thread has finished the microcode update. 4) Let the CPUs do the full CPUID readout and let them synchronize with the control CPU again. 5) Complete bringup one by one Thanks, tglx