Kernel 4.1.28: Update TM user feature bits in scan_features()
Christian Zigotzky
chzigotzky at bayern-mail.de
Thu Jul 14 23:25:16 AEST 2016
Hi Michael,
I was able to compile the kernel 4.1.28 with your patch. It boots and works.
Thanks,
Christian
On 14 July 2016 at 1:33 PM, Christian Zigotzky wrote:
> Hi Michael,
>
> When I received your email with your solution, I had already compiled
> the kernel 4.1.28 with the following temporary solution:
>
> Not suitable for 4.1-stable (no PPC_FEATURE2_HTM_NOSC_COMP).
>
> - * If the kernel doesn't support TM (ie
> CONFIG_PPC_TRANSACTIONAL_MEM=n),
> - * we don't want to turn on TM here, so we use the *_COMP versions
> - * which are 0 if the kernel doesn't support TM.
> + * If the kernel doesn't support TM (ie.
> CONFIG_PPC_TRANSACTIONAL_MEM=n),
> + * we don't want to turn on CPU_FTR_TM here, so we use
> CPU_FTR_TM_COMP
> + * which is 0 if the kernel doesn't support TM.
> */
> - {CPU_FTR_TM_COMP, 0, 0,
> - PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0},
> + {CPU_FTR_TM_COMP, 0, 0, 0, 22, 0, 0},
> };
>
> The kernel boots and KVM PR works. I tested it with Mac-on-Linux/KVM
> PR and Mac OS X Tiger as guest system. I will try your solution too.
>
> Many thanks for your fast response!
>
> Cheers,
>
> Christian
>
>
> On 14 July 2016 at 1:10 PM, Michael Ellerman wrote:
>> Christian Zigotzky<chzigotzky at bayern-mail.de> writes:
>>
>>> Hi All,
>>>
>>> I tried to compile the kernel 4.1.28 today. Unfortunately it doesn't
>>> compile because of an undeclared variable PPC_FEATURE2_HTM_NOSC_COMP.
>>>
>>> Error message:
>>>
>>> CHK include/config/kernel.release
>>> CHK include/generated/uapi/linux/version.h
>>> CHK include/generated/utsrelease.h
>>> CHK include/generated/bounds.h
>>> CHK include/generated/asm-offsets.h
>>> CALL scripts/checksyscalls.sh
>>> CHK include/generated/compile.h
>>> CALL arch/powerpc/kernel/systbl_chk.sh
>>> CC arch/powerpc/kernel/prom.o
>>> arch/powerpc/kernel/prom.c:170:25: error: 'PPC_FEATURE2_HTM_NOSC_COMP'
>>> undeclared here (not in a function)
>>> PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0},
>>> ^
>>> make[1]: *** [arch/powerpc/kernel/prom.o] Error 1
>>> make: *** [arch/powerpc/kernel] Error 2
>>>
>>> ---
>>>
>>> Commit:
>>>
>>> f49eb503f0f9ab66874a81992b14249a1c59b6ad
>>> Author: Anton Blanchard<anton at samba.org>
>>> Date: Fri Apr 15 12:08:19 2016 +1000
>>>
>>> powerpc: Update TM user feature bits in scan_features()
>>>
>>> [ Upstream commit 4705e02498d6d5a7ab98dfee9595cd5e91db2017 ]
>>>
>>> We need to update the user TM feature bits (PPC_FEATURE2_HTM and
>>> PPC_FEATURE2_HTM) to mirror what we do with the kernel TM feature
>>> bit.
>>>
>>> At the moment, if firmware reports TM is not available we turn off
>>> the kernel TM feature bit but leave the userspace ones on. Userspace
>>> thinks it can execute TM instructions and it dies trying.
>>>
>>> This (together with a QEMU patch) fixes PR KVM, which doesn't currently
>>> support TM.
>>>
>>> Signed-off-by: Anton Blanchard<anton at samba.org>
>>> Cc:stable at vger.kernel.org
>>> Signed-off-by: Michael Ellerman<mpe at ellerman.id.au>
>>> Signed-off-by: Sasha Levin<sasha.levin at oracle.com>
>>>
>>> ---
>>>
>>> PPC_FEATURE2_HTM_NOSC_COMP isn't defined or doesn't exist in the
>>> following files:
>> Thanks.
>>
>>> arch/powerpc/include/asm/cputable.h
>>> arch/powerpc/kernel/cputable.c
>>> arch/powerpc/include/uapi/asm/tm.h
>>>
>>> That means the following patches aren't included in the 4.1.28 source code:
>> Sorry that's the wrong fix.
>>
>> PPC_FEATURE2_HTM_NOSC indicates the presence of a certain kernel
>> behaviour, which has *not* been backported to 4.1.
>>
>> The right fix is just to remove the reference to PPC_FEATURE2_HTM_NOSC
>> in 4.1.28.
>>
>> eg:
>>
>> diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
>> index 28dbbb0d12c4..9b19d96e9562 100644
>> --- a/arch/powerpc/kernel/prom.c
>> +++ b/arch/powerpc/kernel/prom.c
>> @@ -166,8 +166,7 @@ static struct ibm_pa_feature {
>> * we don't want to turn on TM here, so we use the *_COMP versions
>> * which are 0 if the kernel doesn't support TM.
>> */
>> - {CPU_FTR_TM_COMP, 0, 0,
>> - PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0},
>> + {CPU_FTR_TM_COMP, 0, 0, PPC_FEATURE2_HTM_COMP, 22, 0, 0},
>> };
>>
>> static void __init scan_features(unsigned long node, const unsigned char *ftrs,
>>
>>
>>
>> cheers
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20160714/1eeb44dc/attachment-0001.html>
More information about the Linuxppc-dev
mailing list