On Tue, 10 Oct 2017 21:44:15 +1000 Nicholas Piggin <npig...@gmail.com> wrote:
> On Tue, 10 Oct 2017 22:11:46 +1100 > Michael Ellerman <m...@ellerman.id.au> wrote: > > > Nicholas Piggin <npig...@gmail.com> writes: > > > > > OPAL boot does not insert secondaries at 0x60 to wait at the secondary > > > hold spinloop. Instead it keeps them held in firmware until the > > > opal_start_cpu call is made, which directs them where the caller > > > specifies. Linux inserts them into generic_secondary_smp_init(), which > > > is after the secondary hold spinloop (they go on to spin at the per-CPU > > > paca loops, but that is another step). > > > > > > So avoid waiting on this spinloop when booting with OPAL firmware. > > > It always just times out. > > > > > > This saves 100ms boot time on bare metal, and 10s of seconds when > > > booting the simulator in SMP. > > > > Oh nice, that's real facepalm territory. > > > > It'd be neater if we just inserted them at 0x60, but the sequence is > > wrong. > > > > Can we fix it just by making spinning_secondaries zero on OPAL? > > I had a look at that, but generic_secondary_smp_init() still > decrements it, so it would underflow which I thought was > uglier. > > I actually have to look a bit further, because KVM guests are > also having the loop time out too by the looks. Ahh okay, pseries is using the start-cpu RTAS call to enter at generic_secondary_smp_init() as well. So we can take it out for pseries as well. Thanks, Nick