Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'powerpc-4.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull powerpc fixes from Michael Ellerman:
"Three powerpc cpu feature fixes from Anton Blanchard:

- scan_features() updated incorrect bits for REAL_LE

- update cpu_user_features2 in scan_features()

- update TM user feature bits in scan_features()"

* tag 'powerpc-4.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
powerpc: Update TM user feature bits in scan_features()
powerpc: Update cpu_user_features2 in scan_features()
powerpc: scan_features() updates incorrect bits for REAL_LE

+16 -11
+1
arch/powerpc/include/uapi/asm/cputable.h
··· 31 31 #define PPC_FEATURE_PSERIES_PERFMON_COMPAT \ 32 32 0x00000040 33 33 34 + /* Reserved - do not use 0x00000004 */ 34 35 #define PPC_FEATURE_TRUE_LE 0x00000002 35 36 #define PPC_FEATURE_PPC_LE 0x00000001 36 37
+15 -11
arch/powerpc/kernel/prom.c
··· 148 148 unsigned long cpu_features; /* CPU_FTR_xxx bit */ 149 149 unsigned long mmu_features; /* MMU_FTR_xxx bit */ 150 150 unsigned int cpu_user_ftrs; /* PPC_FEATURE_xxx bit */ 151 + unsigned int cpu_user_ftrs2; /* PPC_FEATURE2_xxx bit */ 151 152 unsigned char pabyte; /* byte number in ibm,pa-features */ 152 153 unsigned char pabit; /* bit number (big-endian) */ 153 154 unsigned char invert; /* if 1, pa bit set => clear feature */ 154 155 } ibm_pa_features[] __initdata = { 155 - {0, 0, PPC_FEATURE_HAS_MMU, 0, 0, 0}, 156 - {0, 0, PPC_FEATURE_HAS_FPU, 0, 1, 0}, 157 - {CPU_FTR_CTRL, 0, 0, 0, 3, 0}, 158 - {CPU_FTR_NOEXECUTE, 0, 0, 0, 6, 0}, 159 - {CPU_FTR_NODSISRALIGN, 0, 0, 1, 1, 1}, 160 - {0, MMU_FTR_CI_LARGE_PAGE, 0, 1, 2, 0}, 161 - {CPU_FTR_REAL_LE, PPC_FEATURE_TRUE_LE, 5, 0, 0}, 156 + {0, 0, PPC_FEATURE_HAS_MMU, 0, 0, 0, 0}, 157 + {0, 0, PPC_FEATURE_HAS_FPU, 0, 0, 1, 0}, 158 + {CPU_FTR_CTRL, 0, 0, 0, 0, 3, 0}, 159 + {CPU_FTR_NOEXECUTE, 0, 0, 0, 0, 6, 0}, 160 + {CPU_FTR_NODSISRALIGN, 0, 0, 0, 1, 1, 1}, 161 + {0, MMU_FTR_CI_LARGE_PAGE, 0, 0, 1, 2, 0}, 162 + {CPU_FTR_REAL_LE, 0, PPC_FEATURE_TRUE_LE, 0, 5, 0, 0}, 162 163 /* 163 - * If the kernel doesn't support TM (ie. CONFIG_PPC_TRANSACTIONAL_MEM=n), 164 - * we don't want to turn on CPU_FTR_TM here, so we use CPU_FTR_TM_COMP 165 - * which is 0 if the kernel doesn't support TM. 164 + * If the kernel doesn't support TM (ie CONFIG_PPC_TRANSACTIONAL_MEM=n), 165 + * we don't want to turn on TM here, so we use the *_COMP versions 166 + * which are 0 if the kernel doesn't support TM. 166 167 */ 167 - {CPU_FTR_TM_COMP, 0, 0, 22, 0, 0}, 168 + {CPU_FTR_TM_COMP, 0, 0, 169 + PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0}, 168 170 }; 169 171 170 172 static void __init scan_features(unsigned long node, const unsigned char *ftrs, ··· 197 195 if (bit ^ fp->invert) { 198 196 cur_cpu_spec->cpu_features |= fp->cpu_features; 199 197 cur_cpu_spec->cpu_user_features |= fp->cpu_user_ftrs; 198 + cur_cpu_spec->cpu_user_features2 |= fp->cpu_user_ftrs2; 200 199 cur_cpu_spec->mmu_features |= fp->mmu_features; 201 200 } else { 202 201 cur_cpu_spec->cpu_features &= ~fp->cpu_features; 203 202 cur_cpu_spec->cpu_user_features &= ~fp->cpu_user_ftrs; 203 + cur_cpu_spec->cpu_user_features2 &= ~fp->cpu_user_ftrs2; 204 204 cur_cpu_spec->mmu_features &= ~fp->mmu_features; 205 205 } 206 206 }