diff options
author | Michael Ellerman <mpe@ellerman.id.au> | 2016-10-11 21:15:04 +1100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-10-12 08:32:28 +1100 |
commit | 08bf75ba852ef8304a84b6a030466b4b4850382e (patch) | |
tree | cdeff86cdbc0052d317f1977a01c77e070d69dba | |
parent | 1a34439e5a0b2235e43f96816dbb15ee1154f656 (diff) | |
download | linux-08bf75ba852ef8304a84b6a030466b4b4850382e.tar.gz linux-08bf75ba852ef8304a84b6a030466b4b4850382e.tar.bz2 linux-08bf75ba852ef8304a84b6a030466b4b4850382e.zip |
powerpc/mm/hash64: Fix might_have_hea() check
In commit 2b4e3ad8f579 ("powerpc/mm/hash64: Don't test for machine type
to detect HEA special case") we changed the logic in might_have_hea()
to check FW_FEATURE_SPLPAR rather than machine_is(pseries).
However the check was incorrectly negated, leading to crashes on
machines with HEA adapters, such as:
mm: Hashing failure ! EA=0xd000080080004040 access=0x800000000000000e current=NetworkManager
trap=0x300 vsid=0x13d349c ssize=1 base psize=2 psize 2 pte=0xc0003cc033e701ae
Unable to handle kernel paging request for data at address 0xd000080080004040
Call Trace:
.ehea_create_cq+0x148/0x340 [ehea] (unreliable)
.ehea_up+0x258/0x1200 [ehea]
.ehea_open+0x44/0x1a0 [ehea]
...
Fix it by removing the negation.
Fixes: 2b4e3ad8f579 ("powerpc/mm/hash64: Don't test for machine type to detect HEA special case")
Cc: stable@vger.kernel.org # v4.8+
Reported-by: Denis Kirjanov <kda@linux-powerpc.org>
Reported-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 4cebc31e53de..4e83d872872d 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -526,7 +526,7 @@ static bool might_have_hea(void) */ #ifdef CONFIG_IBMEBUS return !cpu_has_feature(CPU_FTR_ARCH_207S) && - !firmware_has_feature(FW_FEATURE_SPLPAR); + firmware_has_feature(FW_FEATURE_SPLPAR); #else return false; #endif |