[PATCH] [POWERPC] ppc32: Fix errata for 603 CPUs

Kumar Gala galak at kernel.crashing.org
Tue Apr 22 06:25:15 EST 2008


On Apr 21, 2008, at 3:19 PM, Gabriel Paubert wrote:
> On Mon, Apr 21, 2008 at 02:57:47PM -0500, Kumar Gala wrote:
>> 603 CPUs have the same issue that some 750 CPUs have in that they  
>> can crash
>> in funny ways if a store from an FPU register instruction is  
>> executed on a
>> register that has never been initialized since power on.  This  
>> patch fixes
>> it by making sure all FP registers have been properly initialized  
>> at kernel
>> boot.
>>
>> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
>> ---
>>
>> Paul, I've put this into my powerpc-next tree since its a pretty  
>> trivial
>> patch.
>>
>> - k
>>
>> arch/powerpc/kernel/cpu_setup_6xx.S |    9 ++++++++-
>> 1 files changed, 8 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/cpu_setup_6xx.S b/arch/powerpc/ 
>> kernel/cpu_setup_6xx.S
>> index f1ee0b3..4a1c3cd 100644
>> --- a/arch/powerpc/kernel/cpu_setup_6xx.S
>> +++ b/arch/powerpc/kernel/cpu_setup_6xx.S
>> @@ -17,7 +17,14 @@
>> #include <asm/cache.h>
>>
>> _GLOBAL(__setup_cpu_603)
>> -	b	setup_common_caches
>> +	mflr	r4
>> +BEGIN_FTR_SECTION
>> +	bl	__init_fpu_registers
>> +END_FTR_SECTION_IFCLR(CPU_FTR_FPU_UNAVAILABLE)
>> +	bl	__init_fpu_registers
>
> I don't understand that code.
>
> What does the second bl __init_fpu_regiters do?

that was a copy/paste error.  (see v2 of the patch).

> As I understand it, the first one is conditional on the presence
> of an FPU (reasonable). But the secone one makes no sense.
>
> Finally wouldn't it be simpler to initialize the FPU on all CPU
> that have it?

that would require a change to the entry point of all these  
functions.  Its not worth the savings.

>> +	bl	setup_common_caches
>> +	mtlr	r4
>> +	blr
>
> You can use tail call elimination and save one instruction there :-)

I think we can find better places to save code size. :)

- k



More information about the Linuxppc-dev mailing list