Does SMP work at all on 40x ?

Christophe Leroy christophe.leroy at c-s.fr
Thu Jan 31 21:53:17 AEDT 2019



Le 30/01/2019 à 12:43, Michael Ellerman a écrit :
> Christophe Leroy <christophe.leroy at c-s.fr> writes:
> 
>> In transfer_to_handler() (entry_32.S), we have:
>>
>> #if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
>> ...
>> #ifdef CONFIG_SMP
>> 	CURRENT_THREAD_INFO(r9, r1)
>> 	lwz	r9,TI_CPU(r9)
>> 	slwi	r9,r9,3
>> 	add	r11,r11,r9
>> #endif
>> #endif
>>
>> When running this piece of code, MMU translation is off. But r9 contains
>> the virtual addr of current_thread_info, so unless I miss something,
>> this cannot work on the 40x, can it ?
>>
>> On CONFIG_BOOKE it works because phys addr = virt addr
> 
> AFAIK 40x can't be SMP:
> 
>    config SMP
>    	depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
> 
> 
> But this stuff is all before my time.
> 
> The commit that added the SMP block was clearly only meant for BookE:
> 
>    4eaddb4d7ec3 ("[POWERPC] Make Book-E debug handling SMP safe")

Ok, then no need to worry about it. It will implicitely get fixed with 
the THREAD_INFO_IN_TASK_STRUCT series.

Christophe


More information about the Linuxppc-dev mailing list