From: Greg Kroah-Hartman Date: Mon, 9 May 2016 07:14:50 +0000 (+0200) Subject: 3.14-stable patches X-Git-Tag: v3.14.69~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd6a4ed7c5345a4b0e171dc5c2e6315f96764366;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: powerpc-scan_features-updates-incorrect-bits-for-real_le.patch --- diff --git a/queue-3.14/powerpc-scan_features-updates-incorrect-bits-for-real_le.patch b/queue-3.14/powerpc-scan_features-updates-incorrect-bits-for-real_le.patch new file mode 100644 index 00000000000..7af7f42d895 --- /dev/null +++ b/queue-3.14/powerpc-scan_features-updates-incorrect-bits-for-real_le.patch @@ -0,0 +1,79 @@ +From 6997e57d693b07289694239e52a10d2f02c3a46f Mon Sep 17 00:00:00 2001 +From: Anton Blanchard +Date: Fri, 15 Apr 2016 12:06:13 +1000 +Subject: powerpc: scan_features() updates incorrect bits for REAL_LE + +From: Anton Blanchard + +commit 6997e57d693b07289694239e52a10d2f02c3a46f upstream. + +The REAL_LE feature entry in the ibm_pa_feature struct is missing an MMU +feature value, meaning all the remaining elements initialise the wrong +values. + +This means instead of checking for byte 5, bit 0, we check for byte 0, +bit 0, and then we incorrectly set the CPU feature bit as well as MMU +feature bit 1 and CPU user feature bits 0 and 2 (5). + +Checking byte 0 bit 0 (IBM numbering), means we're looking at the +"Memory Management Unit (MMU)" feature - ie. does the CPU have an MMU. +In practice that bit is set on all platforms which have the property. + +This means we set CPU_FTR_REAL_LE always. In practice that seems not to +matter because all the modern cpus which have this property also +implement REAL_LE, and we've never needed to disable it. + +We're also incorrectly setting MMU feature bit 1, which is: + + #define MMU_FTR_TYPE_8xx 0x00000002 + +Luckily the only place that looks for MMU_FTR_TYPE_8xx is in Book3E +code, which can't run on the same cpus as scan_features(). So this also +doesn't matter in practice. + +Finally in the CPU user feature mask, we're setting bits 0 and 2. Bit 2 +is not currently used, and bit 0 is: + + #define PPC_FEATURE_PPC_LE 0x00000001 + +Which says the CPU supports the old style "PPC Little Endian" mode. +Again this should be harmless in practice as no 64-bit CPUs implement +that mode. + +Fix the code by adding the missing initialisation of the MMU feature. + +Also add a comment marking CPU user feature bit 2 (0x4) as reserved. It +would be unsafe to start using it as old kernels incorrectly set it. + +Fixes: 44ae3ab3358e ("powerpc: Free up some CPU feature bits by moving out MMU-related features") +Signed-off-by: Anton Blanchard +[mpe: Flesh out changelog, add comment reserving 0x4] +Signed-off-by: Michael Ellerman +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/include/uapi/asm/cputable.h | 1 + + arch/powerpc/kernel/prom.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/include/uapi/asm/cputable.h ++++ b/arch/powerpc/include/uapi/asm/cputable.h +@@ -31,6 +31,7 @@ + #define PPC_FEATURE_PSERIES_PERFMON_COMPAT \ + 0x00000040 + ++/* Reserved - do not use 0x00000004 */ + #define PPC_FEATURE_TRUE_LE 0x00000002 + #define PPC_FEATURE_PPC_LE 0x00000001 + +--- a/arch/powerpc/kernel/prom.c ++++ b/arch/powerpc/kernel/prom.c +@@ -159,7 +159,7 @@ static struct ibm_pa_feature { + {CPU_FTR_NOEXECUTE, 0, 0, 0, 6, 0}, + {CPU_FTR_NODSISRALIGN, 0, 0, 1, 1, 1}, + {0, MMU_FTR_CI_LARGE_PAGE, 0, 1, 2, 0}, +- {CPU_FTR_REAL_LE, PPC_FEATURE_TRUE_LE, 5, 0, 0}, ++ {CPU_FTR_REAL_LE, 0, PPC_FEATURE_TRUE_LE, 5, 0, 0}, + }; + + static void __init scan_features(unsigned long node, unsigned char *ftrs, diff --git a/queue-3.14/series b/queue-3.14/series index 84ae03a985e..0326c3a1298 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -20,3 +20,4 @@ usb-serial-cp210x-add-id-for-link-ecu.patch usb-serial-cp210x-add-straizona-focusers-device-ids.patch iio-ak8975-fix-null-pointer-exception-on-early-interrupt.patch input-ads7846-correct-the-value-got-from-spi.patch +powerpc-scan_features-updates-incorrect-bits-for-real_le.patch