Re: Kernel 4.1.28: Update TM user feature bits in scan_features()
Christian Zigotzkywrites: > Hi Michael, > > I was able to compile the kernel 4.1.28 with your patch. It boots and works. Thanks. cheers ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Kernel 4.1.28: Update TM user feature bits in scan_features()
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 Zigotzkywrites: 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 CALLscripts/checksyscalls.sh CHK include/generated/compile.h CALLarch/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 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 Cc:sta...@vger.kernel.org Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin --- 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 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Kernel 4.1.28: Update TM user feature bits in scan_features()
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 Zigotzkywrites: 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 CALLscripts/checksyscalls.sh CHK include/generated/compile.h CALLarch/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 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 Cc:sta...@vger.kernel.org Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin --- 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 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: Kernel 4.1.28: Update TM user feature bits in scan_features()
Christian Zigotzkywrites: > 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 >CALLscripts/checksyscalls.sh >CHK include/generated/compile.h >CALLarch/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 > 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 > Cc: sta...@vger.kernel.org > Signed-off-by: Michael Ellerman > Signed-off-by: Sasha Levin > > --- > > 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 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Kernel 4.1.28: Update TM user feature bits in scan_features()
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 CALLscripts/checksyscalls.sh CHK include/generated/compile.h CALLarch/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 BlanchardDate: 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 Cc: sta...@vger.kernel.org Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin --- PPC_FEATURE2_HTM_NOSC_COMP isn't defined or doesn't exist in the following files: 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: diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index 22d5a7d..4ec19da 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h @@ -236,11 +236,13 @@ extern const char *powerpc_base_platform; /* We only set the TM feature if the kernel was compiled with TM supprt */ #ifdef CONFIG_PPC_TRANSACTIONAL_MEM -#define CPU_FTR_TM_COMPCPU_FTR_TM -#define PPC_FEATURE2_HTM_COMPPPC_FEATURE2_HTM +#define CPU_FTR_TM_COMPCPU_FTR_TM +#define PPC_FEATURE2_HTM_COMPPPC_FEATURE2_HTM +#define PPC_FEATURE2_HTM_NOSC_COMPPPC_FEATURE2_HTM_NOSC #else -#define CPU_FTR_TM_COMP0 -#define PPC_FEATURE2_HTM_COMP0 +#define CPU_FTR_TM_COMP0 +#define PPC_FEATURE2_HTM_COMP0 +#define PPC_FEATURE2_HTM_NOSC_COMP0 #endif /* We need to mark all pages as being coherent if we're SMP or we have a diff --git a/arch/powerpc/include/uapi/asm/cputable.h b/arch/powerpc/include/uapi/asm/cputable.h index 67de80a..2734c00 100644 --- a/arch/powerpc/include/uapi/asm/cputable.h +++ b/arch/powerpc/include/uapi/asm/cputable.h @@ -43,5 +43,6 @@ #define PPC_FEATURE2_ISEL0x0800 #define PPC_FEATURE2_TAR0x0400 #define PPC_FEATURE2_VEC_CRYPTO0x0200 +#define PPC_FEATURE2_HTM_NOSC0x0100 #endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */ diff --git a/arch/powerpc/include/uapi/asm/tm.h b/arch/powerpc/include/uapi/asm/tm.h index 5d836b7..5047659 100644 --- a/arch/powerpc/include/uapi/asm/tm.h +++ b/arch/powerpc/include/uapi/asm/tm.h @@ -11,7 +11,7 @@ #define TM_CAUSE_RESCHED0xde #define TM_CAUSE_TLBI0xdc #define TM_CAUSE_FAC_UNAV0xda -#define TM_CAUSE_SYSCALL0xd8 /* future use */ +#define TM_CAUSE_SYSCALL0xd8 #define TM_CAUSE_MISC0xd6 /* future use */ #define TM_CAUSE_SIGNAL0xd4 #define TM_CAUSE_ALIGNMENT0xd2 diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index c18a2ea..bf3eb39 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -108,7 +108,9 @@ extern void __restore_cpu_e6500(void); PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_PSERIES_PERFMON_COMPAT) #define COMMON_USER2_POWER8(PPC_FEATURE2_ARCH_2_07 | \ - PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \ + PPC_FEATURE2_HTM_COMP | \ + PPC_FEATURE2_HTM_NOSC_COMP | \ + PPC_FEATURE2_DSCR | \ PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \ PPC_FEATURE2_VEC_CRYPTO) #define COMMON_USER_PA6T(COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ -- 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