public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman•id.au>
To: Anton Blanchard <anton@samba•org>,
	Alexey Kardashevskiy <aik@ozlabs•ru>,
	Paul Mackerras <paulus@samba•org>,
	Benjamin Herrenschmidt <benh@kernel•crashing.org>,
	Michael Neuling <mikey@neuling•org>,
	David Gibson <david@gibson•dropbear.id.au>,
	Alexander Graf <agraf@suse•de>
Cc: linuxppc-dev@lists•ozlabs.org, qemu-devel@nongnu•org,
	qemu-ppc@nongnu•org
Subject: [PATCH v2 1/3] powerpc: scan_features() updates incorrect bits for REAL_LE
Date: Mon, 18 Apr 2016 20:36:07 +1000	[thread overview]
Message-ID: <1460975767.5963.1.camel@ellerman.id.au> (raw)
In-Reply-To: <20160415120613.1bbdc5d5@kryten>

From: Anton Blanchard <anton@samba•org>

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 <anton@samba•org>
Cc: stable@vger•kernel.org
[mpe: Flesh out changelog, add comment reserving 0x4]
Signed-off-by: Michael Ellerman <mpe@ellerman•id.au>
---
 arch/powerpc/include/uapi/asm/cputable.h | 1 +
 arch/powerpc/kernel/prom.c               | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/uapi/asm/cputable.h b/arch/powerpc/include/uapi/asm/cputable.h
index 8dde19962a5b..f63c96cd3608 100644
--- 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
 
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 7030b035905d..080c96b44a7f 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -158,7 +158,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},
 	/*
 	 * 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
-- 
2.5.0

  parent reply	other threads:[~2016-04-18 10:36 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-04  6:44 PR KVM and TM issues Anton Blanchard
2016-04-04  7:00 ` Alexey Kardashevskiy
2016-04-04 10:43   ` Anton Blanchard
2016-04-04 11:09     ` [PATCH] spapr: Don't set the TM ibm,pa-features bit in PR KVM mode Anton Blanchard
2016-04-04 11:13       ` [PATCH] spapr: Don't set the TM ibm, pa-features " Alexander Graf
2016-04-30  0:48         ` [PATCH v2] spapr: Don't set the TM ibm,pa-features " Anton Blanchard
2016-05-02  9:36           ` [Qemu-devel] [PATCH v2] spapr: Don't set the TM ibm, pa-features " haris iqbal
2016-05-27  4:52           ` David Gibson
2016-06-07 12:28           ` [PATCH 1/2] Add PowerPC AT_HWCAP2 definitions Anton Blanchard
2016-06-07 12:32             ` [PATCH 2/2] spapr: Better handling of ibm,pa-features TM bit Anton Blanchard
2016-06-08  2:26               ` David Gibson
2016-07-05  5:19                 ` [PATCH 0/3] Rework spapr: Better handling of ibm, pa-features " Sam Bobroff
2016-07-05  5:19                   ` [PATCH 1/3] spapr: Disable ibm, pa-features HTM bit Sam Bobroff
2016-07-05  5:51                     ` David Gibson
2016-07-05  5:19                   ` [PATCH 2/3] Add KVM_CAP_PPC_HTM to linux/kvm.h Sam Bobroff
2016-07-05  6:05                     ` David Gibson
2016-07-06  4:41                       ` Sam Bobroff
2016-07-06  5:09                         ` David Gibson
2016-07-05  5:19                   ` [PATCH 3/3] spapr: Set ibm, pa-features HTM from KVM_CAP_PPC_HTM Sam Bobroff
2016-07-05  6:52                     ` David Gibson
2016-07-06  5:35                   ` [PATCH v2 0/3] Rework spapr: Better handling of ibm, pa-features TM bit Sam Bobroff
2016-07-06  5:35                     ` [PATCH v2 1/3] spapr: Disable ibm, pa-features HTM bit Sam Bobroff
2016-07-07  4:38                       ` David Gibson
2016-07-06  5:35                     ` [PATCH v2 2/3] Add KVM_CAP_PPC_HTM to linux/kvm.h Sam Bobroff
2016-07-07  4:38                       ` David Gibson
2016-07-06  5:35                     ` [PATCH v2 3/3] spapr: Set ibm, pa-features HTM from KVM_CAP_PPC_HTM Sam Bobroff
2016-07-07  4:39                       ` David Gibson
2016-06-08  2:19             ` [PATCH 1/2] Add PowerPC AT_HWCAP2 definitions David Gibson
2016-04-05  2:12       ` [PATCH] spapr: Don't set the TM ibm,pa-features bit in PR KVM mode Paul Mackerras
2016-04-05  4:09         ` David Gibson
2016-04-05  7:33           ` Alexey Kardashevskiy
2016-04-04 11:11     ` [PATCH] powerpc: Clear user CPU feature bits if TM is disabled at runtime Anton Blanchard
2016-04-05  0:52       ` David Gibson
2016-04-05  9:35       ` Michael Ellerman
2016-04-05  9:56         ` Benjamin Herrenschmidt
2016-04-05 22:40           ` Michael Ellerman
2016-04-15  2:06       ` [PATCH 1/3] powerpc: scan_features() updates incorrect bits Anton Blanchard
2016-04-15 14:27         ` [1/3] " Michael Ellerman
2016-04-18  4:40           ` Michael Ellerman
2016-04-18  4:16         ` Michael Ellerman
2016-04-18 10:36         ` Michael Ellerman [this message]
2016-04-19 10:09           ` [v2, 1/3] powerpc: scan_features() updates incorrect bits for REAL_LE Michael Ellerman
2016-04-15  2:07       ` [PATCH 2/3] powerpc: Update cpu_user_features2 in scan_features() Anton Blanchard
2016-04-19 10:09         ` [2/3] " Michael Ellerman
2016-04-15  2:08       ` [PATCH 3/3] powerpc: Update TM user feature bits " Anton Blanchard
2016-04-19 10:09         ` [3/3] " Michael Ellerman
2016-04-04 11:09   ` PR KVM and TM issues Michael Neuling
2016-04-05  7:29     ` Alexey Kardashevskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1460975767.5963.1.camel@ellerman.id.au \
    --to=mpe@ellerman$(echo .)id.au \
    --cc=agraf@suse$(echo .)de \
    --cc=aik@ozlabs$(echo .)ru \
    --cc=anton@samba$(echo .)org \
    --cc=benh@kernel$(echo .)crashing.org \
    --cc=david@gibson$(echo .)dropbear.id.au \
    --cc=linuxppc-dev@lists$(echo .)ozlabs.org \
    --cc=mikey@neuling$(echo .)org \
    --cc=paulus@samba$(echo .)org \
    --cc=qemu-devel@nongnu$(echo .)org \
    --cc=qemu-ppc@nongnu$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox