Subject: Re: [RFC/PATCH] powerpc: Use rtas query-cpu-stopped-state in smp spinup

From: Michael Ellerman <[email-masked]>
Date: Wed, 05 Apr 2006 13:23:30 +0200

On Tue, 2006-04-04 at 12:25 -0500, Nathan Lynch wrote:
> Michael Ellerman wrote:
> > Currently we use a cpumask called of_spin_map to keep track of which threads
> > have been spun up. We basically guess that OF has spun up all even numbered
> > threads, and so all the odd numbered threads need to be brought up.
> > 
> > That's a bit of a dicey assumption at best, and is totally incorrect for
> > kexec.
> >
> > Luckily we have an rtas call which can tell us whether a cpu is up
> > or not, so let's use it?
> 
> 1. query-cpu-stopped-state isn't available on all RTAS systems (I
>    believe it's required only on systems that support cpu offline).

That should be ok, I'm pretty sure the way I've written it if
query-cpu-stopped-state isn't there we try and start it the old way
anyway.

> 2. I've tried it before.  Hope I'm remembering this correctly, but I
>    think my experience was that query-cpu-stopped-state reported
>    nonsense for cpus that were started by OF.  This was on Power5,
>    btw.

That's not what I see, perhaps I have newer firmware?

> 3. This isn't how query-cpu-stopped-state was intended to be used.
>    It's meant to be used by the OS to determine when a thread has
>    stopped itself using the stop-self method.  Which might partially
>    explain (2).

Perhaps, PAPR says: "The query-cpu-stopped-state primitive is used to
query a different processor thread to determine its status with respect
to the RTAS stopped state". I guess I assumed that a thread that's not
started would be in the "RTAS stopped state", which seems logical if not
correct.

cheers

-- 
Michael Ellerman
IBM OzLabs

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person