[PATCH v3 1/6] powerpc/mm: any thread in one core can be the first to setup TLB1
Chenhui Zhao
chenhui.zhao at freescale.com
Thu Dec 3 22:27:21 AEDT 2015
On Wed, Dec 2, 2015 at 8:12 PM, Denis Kirjanov <kda at linux-powerpc.org>
wrote:
> On 11/20/15, Chenhui Zhao <chenhui.zhao at freescale.com> wrote:
>> On e6500, in the case of cpu hotplug, either thread in one core
>> may be the first thread initilzing the TLB1. The subsequent threads
>> must not setup it again.
>>
>> The code is derived from the comment of Scott Wood.
>>
>> Signed-off-by: Chenhui Zhao <chenhui.zhao at freescale.com>
>> ---
>> arch/powerpc/include/asm/cputhreads.h | 7 +++++++
>> arch/powerpc/mm/tlb_nohash.c | 4 +---
>> 2 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/cputhreads.h
>> b/arch/powerpc/include/asm/cputhreads.h
>> index ba42e46..b56cece 100644
>> --- a/arch/powerpc/include/asm/cputhreads.h
>> +++ b/arch/powerpc/include/asm/cputhreads.h
>> @@ -94,6 +94,13 @@ static inline int cpu_last_thread_sibling(int
>> cpu)
>> return cpu | (threads_per_core - 1);
>> }
>>
>> +static inline u32 get_tensr(void)
>> +{
>> + if (cpu_has_feature(CPU_FTR_SMT))
>> + return mfspr(SPRN_TENSR);
>> + else
>> + return 1;
>> +}
> If i get it right, SPRN_TENSR used in the code only if CONFIG_PPC64
> is defined. Then we can make it noop on ppc32.
>
> Thanks!
Yeah, SPRN_TENSR is defined when CONFIG_BOOKE or CONFIG_40x is enabled.
I'd like to change the code like:
static inline u32 get_tensr(void)
{
#ifdef CONFIG_BOOKE
if (cpu_has_feature(CPU_FTR_SMT))
return mfspr(SPRN_TENSR);
#endif
return 1;
}
Thanks,
Chenhui
More information about the Linuxppc-dev
mailing list