[U-Boot] [PATCH 05/11] MIPS: add sleep handler for slave CPUs in multi-processor systems

Daniel Schwierzeck daniel.schwierzeck at googlemail.com
Fri Nov 25 13:19:33 CET 2011


On Fri, Nov 25, 2011 at 9:44 AM, Marek Vasut <marek.vasut at gmail.com> wrote:
>> This handler can be activated on multi-processor systems to boot only
>> the master CPU. All slave CPUs are halted by executing the WAIT
>> instruction. This is also useful to reduce the power consumption at
>> boot time.
>>
>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at googlemail.com>
>> ---
>>  arch/mips/cpu/mips32/start.S |   16 ++++++++++++++++
>>  1 files changed, 16 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/mips/cpu/mips32/start.S b/arch/mips/cpu/mips32/start.S
>> index 9c1b2f7..b6cb4be 100644
>> --- a/arch/mips/cpu/mips32/start.S
>> +++ b/arch/mips/cpu/mips32/start.S
>> @@ -224,6 +224,14 @@ reset:
>>
>>       setup_c0_status_reset
>>
>> +     /* Set all slave CPUs in sleep mode */
>> +#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
>> +     mfc0    k0, CP0_EBASE
>> +     and     k0, EBASEF_CPUNUM
>> +     bne     k0, zero, slave_cpu_sleep
>> +      nop
>> +#endif
>> +
>>       /* Init Timer */
>>       mtc0    zero, CP0_COUNT
>>       mtc0    zero, CP0_COMPARE
>> @@ -383,3 +391,11 @@ romReserved:
>>
>>  romExcHandle:
>>       b       romExcHandle
>> +
>> +     /* Additional handlers */
>> +#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
>> +slave_cpu_sleep:
>> +     wait
>> +     b       slave_cpu_sleep
>> +      nop
>> +#endif
>
> Can't you stall the CPU instead of letting it run in an empty loop? If not:
>
> Acked-by: Marek Vasut <marek.vasut at gmail.com>
>

the CPU is stalled with the wait instruction. The loop is actually paranoia ;)



More information about the U-Boot mailing list