On 17.09.2011, at 19:40, Blue Swirl wrote: > On Sat, Sep 17, 2011 at 5:15 PM, Alexander Graf <ag...@suse.de> wrote: >> >> Am 17.09.2011 um 18:58 schrieb Blue Swirl <blauwir...@gmail.com>: >> >>> On Wed, Sep 14, 2011 at 8:42 AM, Alexander Graf <ag...@suse.de> wrote: >>>> CPUs that are not the boot CPU need to run in spinning code to check if >>>> they >>>> should run off to execute and if so where to jump to. This usually happens >>>> by leaving secondary CPUs looping and checking if some variable in memory >>>> changed. >>>> >>>> In an environment like Qemu however we can be more clever. We can just >>>> export >>>> the spin table the primary CPU modifies as MMIO region that would event >>>> based >>>> wake up the respective secondary CPUs. That saves us quite some cycles >>>> while >>>> the secondary CPUs are not up yet. >>>> >>>> So this patch adds a PV device that simply exports the spinning table into >>>> the >>>> guest and thus allows the primary CPU to wake up secondary ones. >>> >>> On Sparc32, there is no need for a PV device. The CPU is woken up from >>> halted state with an IPI. Maybe you could use this approach? >> >> The way it's done here is defined by u-boot and now also nailed down in the >> ePAPR architecture spec. While alternatives might be more appealing, this is >> how guests work today :). > > OK. I hoped that there were no implementations yet. The header (btw > missing) should point to the spec.
IIUC the spec that includes these bits is not finalized yet. It is however in use on all u-boot versions for e500 that I'm aware of and the method Linux uses to bring up secondary CPUs. Stuart / Scott, do you have any pointers to documentation where the spinning is explained? Alex