Kernel 4.1.28: Update TM user feature bits in scan_features()

Christian Zigotzky chzigotzky at bayern-mail.de
Thu Jul 14 21:33:09 AEST 2016


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/9520e3d2/attachment.html>


More information about the Linuxppc-dev mailing list