• Stafford Horne's avatar
    openrisc: sleep instead of spin on secondary wait · c0567184
    Stafford Horne authored
    Currently we do a spin on secondary cpus when waiting to boot.  This
    theoretically causes issues with power consumption and does cause issues
    with qemu cycle burning (it starves cpu 0 from actually being able to
    boot.)
    
    This change puts each secondary cpu to sleep if they have a power
    management unit, then signals them to wake via IPI when its time to boot.
    If the cpus have no power management unit they will loop as before.
    
    Note: The wakeup IPI requires a special interrupt handler as on secondary
    cpu's the interrupt infrastructure is not yet established.  This
    interrupt handler is set and reset by updating SPR_EVBAR.
    Signed-off-by: default avatarStafford Horne <shorne@gmail.com>
    c0567184
head.S 43.7 KB