diff mbox series

powerpc/hv-24x7: Fix pvr check when setting interface version

Message ID 20230131184804.220756-1-kjain@linux.ibm.com (mailing list archive)
State Accepted
Commit 60bd7936f99fd8cdbeca67180f80ea13d8b97a76
Headers show
Series powerpc/hv-24x7: Fix pvr check when setting interface version | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 24 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 6 jobs.

Commit Message

Kajol Jain Jan. 31, 2023, 6:48 p.m. UTC
Commit ec3eb9d941a9 ("powerpc/perf: Use PVR rather than
oprofile field to determine CPU version") added usage
of pvr value instead of oprofile field to determine the
platform. In hv-24x7 pmu driver code, pvr check uses PVR_POWER8
when assigning the interface version for power8 platform.
But power8 can also have other pvr values like PVR_POWER8E and
PVR_POWER8NVL. Hence the interface version won't be set
properly incase of PVR_POWER8E and PVR_POWER8NVL.
Fix this issue by adding the checks for PVR_POWER8E and
PVR_POWER8NVL as well.

Fixes: ec3eb9d941a9 ("powerpc/perf: Use PVR rather than oprofile field to determine CPU version")
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
---
 arch/powerpc/perf/hv-24x7.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Sachin Sant Feb. 1, 2023, 2:11 p.m. UTC | #1
> On 01-Feb-2023, at 12:18 AM, Kajol Jain <kjain@linux.ibm.com> wrote:
> 
> Commit ec3eb9d941a9 ("powerpc/perf: Use PVR rather than
> oprofile field to determine CPU version") added usage
> of pvr value instead of oprofile field to determine the
> platform. In hv-24x7 pmu driver code, pvr check uses PVR_POWER8
> when assigning the interface version for power8 platform.
> But power8 can also have other pvr values like PVR_POWER8E and
> PVR_POWER8NVL. Hence the interface version won't be set
> properly incase of PVR_POWER8E and PVR_POWER8NVL.
> Fix this issue by adding the checks for PVR_POWER8E and
> PVR_POWER8NVL as well.
> 
> Fixes: ec3eb9d941a9 ("powerpc/perf: Use PVR rather than oprofile field to determine CPU version")
> Reported-by: Sachin Sant <sachinp@linux.ibm.com>
> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
> ---

Thanks for the fix. Tested on Power8 successfully.
Tested-by: Sachin Sant <sachinp@linux.ibm.com>

> arch/powerpc/perf/hv-24x7.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
> index 33c23225fd54..8c3253df133d 100644
> --- a/arch/powerpc/perf/hv-24x7.c
> +++ b/arch/powerpc/perf/hv-24x7.c
> @@ -1727,7 +1727,8 @@ static int hv_24x7_init(void)
> }
> 
> /* POWER8 only supports v1, while POWER9 only supports v2. */
> - if (PVR_VER(pvr) == PVR_POWER8)
> + if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E ||
> + PVR_VER(pvr) == PVR_POWER8NVL)

Do we really need the check for Power8NV?
Kajol Jain Feb. 3, 2023, 4:53 a.m. UTC | #2
On 2/1/23 19:41, Sachin Sant wrote:
> 
> 
>> On 01-Feb-2023, at 12:18 AM, Kajol Jain <kjain@linux.ibm.com> wrote:
>>
>> Commit ec3eb9d941a9 ("powerpc/perf: Use PVR rather than
>> oprofile field to determine CPU version") added usage
>> of pvr value instead of oprofile field to determine the
>> platform. In hv-24x7 pmu driver code, pvr check uses PVR_POWER8
>> when assigning the interface version for power8 platform.
>> But power8 can also have other pvr values like PVR_POWER8E and
>> PVR_POWER8NVL. Hence the interface version won't be set
>> properly incase of PVR_POWER8E and PVR_POWER8NVL.
>> Fix this issue by adding the checks for PVR_POWER8E and
>> PVR_POWER8NVL as well.
>>
>> Fixes: ec3eb9d941a9 ("powerpc/perf: Use PVR rather than oprofile field to determine CPU version")
>> Reported-by: Sachin Sant <sachinp@linux.ibm.com>
>> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
>> ---
> 
> Thanks for the fix. Tested on Power8 successfully.
> Tested-by: Sachin Sant <sachinp@linux.ibm.com>
> 
>> arch/powerpc/perf/hv-24x7.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
>> index 33c23225fd54..8c3253df133d 100644
>> --- a/arch/powerpc/perf/hv-24x7.c
>> +++ b/arch/powerpc/perf/hv-24x7.c
>> @@ -1727,7 +1727,8 @@ static int hv_24x7_init(void)
>> }
>>
>> /* POWER8 only supports v1, while POWER9 only supports v2. */
>> - if (PVR_VER(pvr) == PVR_POWER8)
>> + if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E ||
>> + PVR_VER(pvr) == PVR_POWER8NVL)
> 
> Do we really need the check for Power8NV?

Hi Sachin,
    Thanks for testing the patch. Here the NVL in POWER8NVL corresponds
to "NVLink" and its not related to PowerNV. PVR value used to specify
processor version which might be in used in any of  pseries/powernv,
hence I added this check.

Thanks,
Kajol Jain
Michael Ellerman Feb. 15, 2023, 12:40 p.m. UTC | #3
On Wed, 1 Feb 2023 00:18:04 +0530, Kajol Jain wrote:
> Commit ec3eb9d941a9 ("powerpc/perf: Use PVR rather than
> oprofile field to determine CPU version") added usage
> of pvr value instead of oprofile field to determine the
> platform. In hv-24x7 pmu driver code, pvr check uses PVR_POWER8
> when assigning the interface version for power8 platform.
> But power8 can also have other pvr values like PVR_POWER8E and
> PVR_POWER8NVL. Hence the interface version won't be set
> properly incase of PVR_POWER8E and PVR_POWER8NVL.
> Fix this issue by adding the checks for PVR_POWER8E and
> PVR_POWER8NVL as well.
> 
> [...]

Applied to powerpc/next.

[1/1] powerpc/hv-24x7: Fix pvr check when setting interface version
      https://git.kernel.org/powerpc/c/60bd7936f99fd8cdbeca67180f80ea13d8b97a76

cheers
diff mbox series

Patch

diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
index 33c23225fd54..8c3253df133d 100644
--- a/arch/powerpc/perf/hv-24x7.c
+++ b/arch/powerpc/perf/hv-24x7.c
@@ -1727,7 +1727,8 @@  static int hv_24x7_init(void)
 	}
 
 	/* POWER8 only supports v1, while POWER9 only supports v2. */
-	if (PVR_VER(pvr) == PVR_POWER8)
+	if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E ||
+			PVR_VER(pvr) == PVR_POWER8NVL)
 		interface_version = 1;
 	else {
 		interface_version = 2;