diff mbox series

drivers/perf: arm_pmu: Show PMU version on boot

Message ID 1596106041-7688-1-git-send-email-zhangshaokun@hisilicon.com (mailing list archive)
State New, archived
Headers show
Series drivers/perf: arm_pmu: Show PMU version on boot | expand

Commit Message

Shaokun Zhang July 30, 2020, 10:47 a.m. UTC
The @pmuver field has been initialized and can tell the PMU version.
Let's show it on boot and the user obtains this information directly.

Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
---
 drivers/perf/arm_pmu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Will Deacon Aug. 21, 2020, 4:03 p.m. UTC | #1
On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
> The @pmuver field has been initialized and can tell the PMU version.
> Let's show it on boot and the user obtains this information directly.
> 
> Cc: Will Deacon <will@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
> ---
>  drivers/perf/arm_pmu.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> index df352b334ea7..36f7fad7ba5a 100644
> --- a/drivers/perf/arm_pmu.c
> +++ b/drivers/perf/arm_pmu.c
> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
>  	if (!__oprofile_cpu_pmu)
>  		__oprofile_cpu_pmu = pmu;
>  
> -	pr_info("enabled with %s PMU driver, %d counters available\n",
> -		pmu->name, pmu->num_events);
> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
> +		pmu->name, pmu->num_events, pmu->pmuver);

Hmm. I'm suspicious about this. Who is using this, and what for? We're
better off exposing things in the existing sysfs directory we have if it's
actually needed by tools.

Will
Shaokun Zhang Aug. 26, 2020, 6:42 a.m. UTC | #2
Hi Will,

在 2020/8/22 0:03, Will Deacon 写道:
> On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
>> The @pmuver field has been initialized and can tell the PMU version.
>> Let's show it on boot and the user obtains this information directly.
>>
>> Cc: Will Deacon <will@kernel.org>
>> Cc: Mark Rutland <mark.rutland@arm.com>
>> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
>> ---
>>  drivers/perf/arm_pmu.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
>> index df352b334ea7..36f7fad7ba5a 100644
>> --- a/drivers/perf/arm_pmu.c
>> +++ b/drivers/perf/arm_pmu.c
>> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
>>  	if (!__oprofile_cpu_pmu)
>>  		__oprofile_cpu_pmu = pmu;
>>  
>> -	pr_info("enabled with %s PMU driver, %d counters available\n",
>> -		pmu->name, pmu->num_events);
>> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
>> +		pmu->name, pmu->num_events, pmu->pmuver);
> 
> Hmm. I'm suspicious about this. Who is using this, and what for? We're

Since Arm ARM has extended PMU version for Armv8.1/8.4/8.5 with different PMUver in
ID_AA64DFR0_EL1, someone who does the performance profiling may care the number of
counter and want to know the supported PMU version. Because some events or features
are related to PMU version, Like events corresponding to PMCEID0/1_EL0[32:63] or if
anyone be told PMMIR_EL1 to ZERO, he can check the PMU version directly from the boot
log information.

> better off exposing things in the existing sysfs directory we have if it's
> actually needed by tools.

If you agree it is needed, it is a good choice to do it.

Thanks,
Shaokun

> 
> Will
> 
> .
>
Will Deacon Sept. 1, 2020, 4:16 p.m. UTC | #3
On Wed, Aug 26, 2020 at 02:42:26PM +0800, Shaokun Zhang wrote:
> 在 2020/8/22 0:03, Will Deacon 写道:
> > On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
> >> The @pmuver field has been initialized and can tell the PMU version.
> >> Let's show it on boot and the user obtains this information directly.
> >>
> >> Cc: Will Deacon <will@kernel.org>
> >> Cc: Mark Rutland <mark.rutland@arm.com>
> >> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
> >> ---
> >>  drivers/perf/arm_pmu.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> >> index df352b334ea7..36f7fad7ba5a 100644
> >> --- a/drivers/perf/arm_pmu.c
> >> +++ b/drivers/perf/arm_pmu.c
> >> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
> >>  	if (!__oprofile_cpu_pmu)
> >>  		__oprofile_cpu_pmu = pmu;
> >>  
> >> -	pr_info("enabled with %s PMU driver, %d counters available\n",
> >> -		pmu->name, pmu->num_events);
> >> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
> >> +		pmu->name, pmu->num_events, pmu->pmuver);
> > 
> > Hmm. I'm suspicious about this. Who is using this, and what for? We're
> 
> Since Arm ARM has extended PMU version for Armv8.1/8.4/8.5 with different PMUver in
> ID_AA64DFR0_EL1, someone who does the performance profiling may care the number of
> counter and want to know the supported PMU version. Because some events or features
> are related to PMU version, Like events corresponding to PMCEID0/1_EL0[32:63] or if
> anyone be told PMMIR_EL1 to ZERO, he can check the PMU version directly from the boot
> log information.

What do you mean by "may care the number of counter"? The number of counters
is independent of the PMU version and shouldn't really be of interest to
userspace anyway, should it? Or are you referring to something else?

As for whether events are supported or not, we already expose that on a
per-event basis, and I think we should continue to do that.

So overall, I still don't see the value in exposing this.

Will
Shaokun Zhang Sept. 2, 2020, 1:31 a.m. UTC | #4
Hi Will,

在 2020/9/2 0:16, Will Deacon 写道:
> On Wed, Aug 26, 2020 at 02:42:26PM +0800, Shaokun Zhang wrote:
>> 在 2020/8/22 0:03, Will Deacon 写道:
>>> On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
>>>> The @pmuver field has been initialized and can tell the PMU version.
>>>> Let's show it on boot and the user obtains this information directly.
>>>>
>>>> Cc: Will Deacon <will@kernel.org>
>>>> Cc: Mark Rutland <mark.rutland@arm.com>
>>>> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
>>>> ---
>>>>  drivers/perf/arm_pmu.c | 4 ++--
>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
>>>> index df352b334ea7..36f7fad7ba5a 100644
>>>> --- a/drivers/perf/arm_pmu.c
>>>> +++ b/drivers/perf/arm_pmu.c
>>>> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
>>>>  	if (!__oprofile_cpu_pmu)
>>>>  		__oprofile_cpu_pmu = pmu;
>>>>  
>>>> -	pr_info("enabled with %s PMU driver, %d counters available\n",
>>>> -		pmu->name, pmu->num_events);
>>>> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
>>>> +		pmu->name, pmu->num_events, pmu->pmuver);
>>>
>>> Hmm. I'm suspicious about this. Who is using this, and what for? We're
>>
>> Since Arm ARM has extended PMU version for Armv8.1/8.4/8.5 with different PMUver in
>> ID_AA64DFR0_EL1, someone who does the performance profiling may care the number of
>> counter and want to know the supported PMU version. Because some events or features
>> are related to PMU version, Like events corresponding to PMCEID0/1_EL0[32:63] or if
>> anyone be told PMMIR_EL1 to ZERO, he can check the PMU version directly from the boot
>> log information.
> 
> What do you mean by "may care the number of counter"? The number of counters

If the user doesn't want the kernel to use time multiplexing, it shall use events less
than the counters that it has been told by the boot information, of course, he can access
PMCR_EL0 directly to check it.

> is independent of the PMU version and shouldn't really be of interest to
> userspace anyway, should it? Or are you referring to something else?

Yes, it is independent, I mean that if the user is interested in PMU information, like,
PMU counter number, PMU version, etc, it can be exposed at boot time directly.

> 
> As for whether events are supported or not, we already expose that on a
> per-event basis, and I think we should continue to do that.

Shall we check the PMU version(ARMv8.1) in the driver for PMCEID0/1_EL0[32:63]?

> 
> So overall, I still don't see the value in exposing this.

Thanks Will more explanations.
Shaokun

> 
> Will
> 
> .
>
Will Deacon Sept. 7, 2020, 1:24 p.m. UTC | #5
On Wed, Sep 02, 2020 at 09:31:00AM +0800, Shaokun Zhang wrote:
> 在 2020/9/2 0:16, Will Deacon 写道:
> > On Wed, Aug 26, 2020 at 02:42:26PM +0800, Shaokun Zhang wrote:
> >> 在 2020/8/22 0:03, Will Deacon 写道:
> >>> On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
> >>>> The @pmuver field has been initialized and can tell the PMU version.
> >>>> Let's show it on boot and the user obtains this information directly.
> >>>>
> >>>> Cc: Will Deacon <will@kernel.org>
> >>>> Cc: Mark Rutland <mark.rutland@arm.com>
> >>>> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
> >>>> ---
> >>>>  drivers/perf/arm_pmu.c | 4 ++--
> >>>>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> >>>> index df352b334ea7..36f7fad7ba5a 100644
> >>>> --- a/drivers/perf/arm_pmu.c
> >>>> +++ b/drivers/perf/arm_pmu.c
> >>>> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
> >>>>  	if (!__oprofile_cpu_pmu)
> >>>>  		__oprofile_cpu_pmu = pmu;
> >>>>  
> >>>> -	pr_info("enabled with %s PMU driver, %d counters available\n",
> >>>> -		pmu->name, pmu->num_events);
> >>>> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
> >>>> +		pmu->name, pmu->num_events, pmu->pmuver);
> >>>
> >>> Hmm. I'm suspicious about this. Who is using this, and what for? We're
> >>
> >> Since Arm ARM has extended PMU version for Armv8.1/8.4/8.5 with different PMUver in
> >> ID_AA64DFR0_EL1, someone who does the performance profiling may care the number of
> >> counter and want to know the supported PMU version. Because some events or features
> >> are related to PMU version, Like events corresponding to PMCEID0/1_EL0[32:63] or if
> >> anyone be told PMMIR_EL1 to ZERO, he can check the PMU version directly from the boot
> >> log information.
> > 
> > What do you mean by "may care the number of counter"? The number of counters
> 
> If the user doesn't want the kernel to use time multiplexing, it shall use events less
> than the counters that it has been told by the boot information, of course, he can access
> PMCR_EL0 directly to check it.

But this isn't an arm64-specific problem, is it? What happens on other
architectures, such as x86?

> > is independent of the PMU version and shouldn't really be of interest to
> > userspace anyway, should it? Or are you referring to something else?
> 
> Yes, it is independent, I mean that if the user is interested in PMU information, like,
> PMU counter number, PMU version, etc, it can be exposed at boot time directly.

If userspace needs information about the PMU, I'm up for exposing it via
sysfs, but I don't think we should expose things for the sake of it, and I
also think that information which isn't specific to the particular PMU
should be exposed more generally so that userspace doesn't need lots of
different parsers to get the same information on different hardware.

> > As for whether events are supported or not, we already expose that on a
> > per-event basis, and I think we should continue to do that.
> 
> Shall we check the PMU version(ARMv8.1) in the driver for PMCEID0/1_EL0[32:63]?

I'd need to see the patch, since I don't see where you're going with this.

Will
Shaokun Zhang Sept. 8, 2020, 10:59 a.m. UTC | #6
Hi Will,

在 2020/9/7 21:24, Will Deacon 写道:
> On Wed, Sep 02, 2020 at 09:31:00AM +0800, Shaokun Zhang wrote:
>> 在 2020/9/2 0:16, Will Deacon 写道:
>>> On Wed, Aug 26, 2020 at 02:42:26PM +0800, Shaokun Zhang wrote:
>>>> 在 2020/8/22 0:03, Will Deacon 写道:
>>>>> On Thu, Jul 30, 2020 at 06:47:21PM +0800, Shaokun Zhang wrote:
>>>>>> The @pmuver field has been initialized and can tell the PMU version.
>>>>>> Let's show it on boot and the user obtains this information directly.
>>>>>>
>>>>>> Cc: Will Deacon <will@kernel.org>
>>>>>> Cc: Mark Rutland <mark.rutland@arm.com>
>>>>>> Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
>>>>>> ---
>>>>>>  drivers/perf/arm_pmu.c | 4 ++--
>>>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
>>>>>> index df352b334ea7..36f7fad7ba5a 100644
>>>>>> --- a/drivers/perf/arm_pmu.c
>>>>>> +++ b/drivers/perf/arm_pmu.c
>>>>>> @@ -870,8 +870,8 @@ int armpmu_register(struct arm_pmu *pmu)
>>>>>>  	if (!__oprofile_cpu_pmu)
>>>>>>  		__oprofile_cpu_pmu = pmu;
>>>>>>  
>>>>>> -	pr_info("enabled with %s PMU driver, %d counters available\n",
>>>>>> -		pmu->name, pmu->num_events);
>>>>>> +	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
>>>>>> +		pmu->name, pmu->num_events, pmu->pmuver);
>>>>>
>>>>> Hmm. I'm suspicious about this. Who is using this, and what for? We're
>>>>
>>>> Since Arm ARM has extended PMU version for Armv8.1/8.4/8.5 with different PMUver in
>>>> ID_AA64DFR0_EL1, someone who does the performance profiling may care the number of
>>>> counter and want to know the supported PMU version. Because some events or features
>>>> are related to PMU version, Like events corresponding to PMCEID0/1_EL0[32:63] or if
>>>> anyone be told PMMIR_EL1 to ZERO, he can check the PMU version directly from the boot
>>>> log information.
>>>
>>> What do you mean by "may care the number of counter"? The number of counters
>>
>> If the user doesn't want the kernel to use time multiplexing, it shall use events less
>> than the counters that it has been told by the boot information, of course, he can access
>> PMCR_EL0 directly to check it.
> 
> But this isn't an arm64-specific problem, is it? What happens on other

Correct, but I don't mention it as a problem, I just want to explain why some user may check
the counter number information. Apologies that I gave some misunderstanding words.

> architectures, such as x86?
> 
>>> is independent of the PMU version and shouldn't really be of interest to
>>> userspace anyway, should it? Or are you referring to something else?
>>
>> Yes, it is independent, I mean that if the user is interested in PMU information, like,
>> PMU counter number, PMU version, etc, it can be exposed at boot time directly.
> 
> If userspace needs information about the PMU, I'm up for exposing it via
> sysfs, but I don't think we should expose things for the sake of it, and I
> also think that information which isn't specific to the particular PMU
> should be exposed more generally so that userspace doesn't need lots of
> different parsers to get the same information on different hardware.
> 

Got it, thanks for more explanations.

>>> As for whether events are supported or not, we already expose that on a
>>> per-event basis, and I think we should continue to do that.
>>
>> Shall we check the PMU version(ARMv8.1) in the driver for PMCEID0/1_EL0[32:63]?
> 
> I'd need to see the patch, since I don't see where you're going with this.

Oh,I'm not sure whether we shall check PMU verion for PMCEID0/1_EL0[32:63] since
these are ARMv8.1-PMU events. Indeed I didn't do it anything about it in this patch.

Thanks,
Shaokun

> 

> Will
> 
> .
>
diff mbox series

Patch

diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index df352b334ea7..36f7fad7ba5a 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -870,8 +870,8 @@  int armpmu_register(struct arm_pmu *pmu)
 	if (!__oprofile_cpu_pmu)
 		__oprofile_cpu_pmu = pmu;
 
-	pr_info("enabled with %s PMU driver, %d counters available\n",
-		pmu->name, pmu->num_events);
+	pr_info("enabled with %s PMU driver, %d counters available, version is %d\n",
+		pmu->name, pmu->num_events, pmu->pmuver);
 
 	return 0;