Commit d79e7a5f authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman
Browse files

powerpc/book3s64/pkeys: Use PVR check instead of cpu feature



We are wrongly using CPU_FTRS_POWER8 to check for P8 support. Instead, we should
use PVR value. Now considering we are using CPU_FTRS_POWER8, that
implies we returned true for P9 with older firmware. Keep the same behavior
by checking for P9 PVR value.

Fixes: cf43d3b2 ("powerpc: Enable pkey subsystem")
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200709032946.881753-2-aneesh.kumar@linux.ibm.com
parent 85343a8d
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -83,13 +83,17 @@ static int pkey_initialize(void)
	scan_pkey_feature();

	/*
	 * Let's assume 32 pkeys on P8 bare metal, if its not defined by device
	 * tree. We make this exception since skiboot forgot to expose this
	 * property on power8.
	 * Let's assume 32 pkeys on P8/P9 bare metal, if its not defined by device
	 * tree. We make this exception since some version of skiboot forgot to
	 * expose this property on power8/9.
	 */
	if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR) &&
			cpu_has_feature(CPU_FTRS_POWER8))
	if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR)) {
		unsigned long pvr = mfspr(SPRN_PVR);

		if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E ||
		    PVR_VER(pvr) == PVR_POWER8NVL || PVR_VER(pvr) == PVR_POWER9)
			pkeys_total = 32;
	}

	/*
	 * Adjust the upper limit, based on the number of bits supported by