patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq
       [not found] <20210714084407.51979-1-richael.zhuang@arm.com>
@ 2021-07-14  8:44 ` Richael Zhuang
  2021-07-14  9:15   ` David Hunt
       [not found]   ` <20210714104405.23917-1-richael.zhuang@arm.com>
  0 siblings, 2 replies; 9+ messages in thread
From: Richael Zhuang @ 2021-07-14  8:44 UTC (permalink / raw)
  To: dev; +Cc: zhiminx.huang, david.hunt, stable

For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
same. For acpi_cpufreq and cppc_cpufreq, we should check
cpuinfo_cur_freq. So here checking cpuinfo_cur_freq before
scaling_cur_freq to make sure it works for all cpufreq drivers.

Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
 app/test/test_power_cpufreq.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index b8fc53925c..f56abb6f86 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
 	int i;
 
 	if (snprintf(fullpath, sizeof(fullpath),
-		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
+		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
 		return 0;
 	}
 	f = fopen(fullpath, "r");
 	if (f == NULL) {
 		if (snprintf(fullpath, sizeof(fullpath),
-			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
+			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
 			return 0;
 		}
 		f = fopen(fullpath, "r");
-- 
2.20.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq
  2021-07-14  8:44 ` [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq Richael Zhuang
@ 2021-07-14  9:15   ` David Hunt
  2021-07-14  9:23     ` Richael Zhuang
       [not found]   ` <20210714104405.23917-1-richael.zhuang@arm.com>
  1 sibling, 1 reply; 9+ messages in thread
From: David Hunt @ 2021-07-14  9:15 UTC (permalink / raw)
  To: Richael Zhuang, dev; +Cc: zhiminx.huang, stable


On 14/7/2021 9:44 AM, Richael Zhuang wrote:
> For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> same. For acpi_cpufreq and cppc_cpufreq, we should check
> cpuinfo_cur_freq. So here checking cpuinfo_cur_freq before
> scaling_cur_freq to make sure it works for all cpufreq drivers.
>
> Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> Cc: david.hunt@intel.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> ---
>   app/test/test_power_cpufreq.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
> index b8fc53925c..f56abb6f86 100644
> --- a/app/test/test_power_cpufreq.c
> +++ b/app/test/test_power_cpufreq.c
> @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
>   	int i;
>   
>   	if (snprintf(fullpath, sizeof(fullpath),
> -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
>   		return 0;
>   	}
>   	f = fopen(fullpath, "r");
>   	if (f == NULL) {
>   		if (snprintf(fullpath, sizeof(fullpath),
> -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
>   			return 0;
>   		}
>   		f = fopen(fullpath, "r");


Hi Richael, I don't think this patch fixes anything. If the scaling file 
is not available, it will then attempt to open the cpuinfo file. 
Changing the order does not address the underlying issue.

It looks like the test is failing in check_cur_req, which is only 
rounding for cppc driver. I think it also needs to round for the other 
drivers. I've just checked intel_pstate driver now, and it needs the 
rounding. I would think that acpi driver also needs it. I'll do a bit 
more investigation and see if I can  change to acpi and attempt to 
confirm that all drivers need the rounding.

Rgds,
Dave.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq
  2021-07-14  9:15   ` David Hunt
@ 2021-07-14  9:23     ` Richael Zhuang
  2021-07-14 10:13       ` David Hunt
  0 siblings, 1 reply; 9+ messages in thread
From: Richael Zhuang @ 2021-07-14  9:23 UTC (permalink / raw)
  To: David Hunt, dev; +Cc: zhiminx.huang, stable, nd, nd



> -----Original Message-----
> From: David Hunt <david.hunt@intel.com>
> Sent: Wednesday, July 14, 2021 5:15 PM
> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
> Cc: zhiminx.huang@intel.com; stable@dpdk.org
> Subject: Re: [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling
> cur freq
> 
> 
> On 14/7/2021 9:44 AM, Richael Zhuang wrote:
> > For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> > scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> > And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> > same. For acpi_cpufreq and cppc_cpufreq, we should check
> > cpuinfo_cur_freq. So here checking cpuinfo_cur_freq before
> > scaling_cur_freq to make sure it works for all cpufreq drivers.
> >
> > Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> > Cc: david.hunt@intel.com
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> > ---
> >   app/test/test_power_cpufreq.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/app/test/test_power_cpufreq.c
> > b/app/test/test_power_cpufreq.c index b8fc53925c..f56abb6f86 100644
> > --- a/app/test/test_power_cpufreq.c
> > +++ b/app/test/test_power_cpufreq.c
> > @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
> bool turbo)
> >   	int i;
> >
> >   	if (snprintf(fullpath, sizeof(fullpath),
> > -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> > +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> >   		return 0;
> >   	}
> >   	f = fopen(fullpath, "r");
> >   	if (f == NULL) {
> >   		if (snprintf(fullpath, sizeof(fullpath),
> > -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0)
> {
> > +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0)
> {
> >   			return 0;
> >   		}
> >   		f = fopen(fullpath, "r");
> 
> 
> Hi Richael, I don't think this patch fixes anything. If the scaling file is not
> available, it will then attempt to open the cpuinfo file.
> Changing the order does not address the underlying issue.
> 
> It looks like the test is failing in check_cur_req, which is only rounding for
> cppc driver. I think it also needs to round for the other drivers. I've just
> checked intel_pstate driver now, and it needs the rounding. I would think
> that acpi driver also needs it. I'll do a bit more investigation and see if I
> can  change to acpi and attempt to confirm that all drivers need the rounding.
> 
> Rgds,
> Dave.
> 
> 
Hi David,
For acpi_cpufreq and cppc_cpufreq, both two files exist. So with the current code, it will check the scaling_cur_freq. But I think for this two drivers, it should check cpuinfo_cur_freq but not scaling_cur_freq. From my system, for acpi cpufreq, the value in cpuinfo_cur_freq and scaling_cur_freq are not the same.  So if not changing the check sequence, the result is:
##########
RTE>>power_cpufreq_autotest
POWER: Env isn't set yet!
POWER: Attempting to initialise ACPI cpufreq power management...
POWER: Initialized successfully for lcore 2 power management
POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
POWER: Lcore id 128 can not exceeds 127
POWER: Initialized successfully for lcore 2 power management
POWER: Power management of lcore 2 is in use
POWER: Invalid lcore ID
POWER: NULL buffer supplied
POWER: Buffer size is not enough
POWER: Invalid lcore ID
POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
Test Failed
RTE>>quit
#############

But after changing the check sequence, the result is OK from my test:
######
RTE>>power_cpufreq_autotest
POWER: Env isn't set yet!
POWER: Attempting to initialise ACPI cpufreq power management...
POWER: Initialized successfully for lcore 2 power management
POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
POWER: Lcore id 128 can not exceeds 127
POWER: Initialized successfully for lcore 2 power management
POWER: Power management of lcore 2 is in use
POWER: Invalid lcore ID
POWER: NULL buffer supplied
POWER: Buffer size is not enough
POWER: Invalid lcore ID
POWER: Invalid lcore ID
POWER: Invalid frequency index 64, which should be less than 3
POWER: Invalid frequency index 3, which should be less than 3
POWER: Failed to enable turbo on lcore 2
POWER: Invalid lcore ID
POWER: Invalid lcore ID
POWER: Invalid lcore ID
POWER: Invalid lcore ID
Turbo not available on lcore 2, skipping test
POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
POWER: Power management of lcore 2 is not used
POWER: Lcore id 128 can not exceeds 127
Test OK
############

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq
  2021-07-14  9:23     ` Richael Zhuang
@ 2021-07-14 10:13       ` David Hunt
  2021-07-14 10:29         ` Richael Zhuang
  0 siblings, 1 reply; 9+ messages in thread
From: David Hunt @ 2021-07-14 10:13 UTC (permalink / raw)
  To: Richael Zhuang, dev; +Cc: zhiminx.huang, stable, nd


On 14/7/2021 10:23 AM, Richael Zhuang wrote:
>
>> -----Original Message-----
>> From: David Hunt <david.hunt@intel.com>
>> Sent: Wednesday, July 14, 2021 5:15 PM
>> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
>> Cc: zhiminx.huang@intel.com; stable@dpdk.org
>> Subject: Re: [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling
>> cur freq
>>
>>
>> On 14/7/2021 9:44 AM, Richael Zhuang wrote:
>>> For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
>>> scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
>>> And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
>>> same. For acpi_cpufreq and cppc_cpufreq, we should check
>>> cpuinfo_cur_freq. So here checking cpuinfo_cur_freq before
>>> scaling_cur_freq to make sure it works for all cpufreq drivers.
>>>
>>> Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
>>> Cc: david.hunt@intel.com
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
>>> ---
>>>    app/test/test_power_cpufreq.c | 4 ++--
>>>    1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/app/test/test_power_cpufreq.c
>>> b/app/test/test_power_cpufreq.c index b8fc53925c..f56abb6f86 100644
>>> --- a/app/test/test_power_cpufreq.c
>>> +++ b/app/test/test_power_cpufreq.c
>>> @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
>> bool turbo)
>>>    	int i;
>>>
>>>    	if (snprintf(fullpath, sizeof(fullpath),
>>> -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
>>> +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
>>>    		return 0;
>>>    	}
>>>    	f = fopen(fullpath, "r");
>>>    	if (f == NULL) {
>>>    		if (snprintf(fullpath, sizeof(fullpath),
>>> -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0)
>> {
>>> +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0)
>> {
>>>    			return 0;
>>>    		}
>>>    		f = fopen(fullpath, "r");
>>
>> Hi Richael, I don't think this patch fixes anything. If the scaling file is not
>> available, it will then attempt to open the cpuinfo file.
>> Changing the order does not address the underlying issue.
>>
>> It looks like the test is failing in check_cur_req, which is only rounding for
>> cppc driver. I think it also needs to round for the other drivers. I've just
>> checked intel_pstate driver now, and it needs the rounding. I would think
>> that acpi driver also needs it. I'll do a bit more investigation and see if I
>> can  change to acpi and attempt to confirm that all drivers need the rounding.
>>
>> Rgds,
>> Dave.
>>
>>
> Hi David,
> For acpi_cpufreq and cppc_cpufreq, both two files exist. So with the current code, it will check the scaling_cur_freq. But I think for this two drivers, it should check cpuinfo_cur_freq but not scaling_cur_freq. From my system, for acpi cpufreq, the value in cpuinfo_cur_freq and scaling_cur_freq are not the same.


Ah OK. Now I see different the values in scaling_cur_freq and 
cpuinfo_cur_freq on a system here with acpi driver. The cpuinfo_cur_freq 
is already rounded, but the scaling_cur_freq is not.

# cat /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq
800259
# cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq
800000

So I think it would make sense to include the re-order of the filenames 
as you suggest, but maybe also add rounding for the pstate driver, as 
that is needed.

-               if (env == PM_ENV_CPPC_CPUFREQ) {
+               if ((env == PM_ENV_CPPC_CPUFREQ) || (env == 
PM_ENV_PSTATE_CPUFREQ)) {

That avoids the complication of the acpi_cpufreq driver when turbo is 
enabled (2301000 for any turbo freq).

I've just run the test with the two changes (reorder filenames and round 
on pstate), and the power_cpufreq_autotest passes on both intel_pstate 
and acpi-cpufreq driver systems.

Regards,
Dave.



>    So if not changing the check sequence, the result is:
> ##########
> RTE>>power_cpufreq_autotest
> POWER: Env isn't set yet!
> POWER: Attempting to initialise ACPI cpufreq power management...
> POWER: Initialized successfully for lcore 2 power management
> POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
> POWER: Lcore id 128 can not exceeds 127
> POWER: Initialized successfully for lcore 2 power management
> POWER: Power management of lcore 2 is in use
> POWER: Invalid lcore ID
> POWER: NULL buffer supplied
> POWER: Buffer size is not enough
> POWER: Invalid lcore ID
> POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
> Test Failed
> RTE>>quit
> #############
>
> But after changing the check sequence, the result is OK from my test:
> ######
> RTE>>power_cpufreq_autotest
> POWER: Env isn't set yet!
> POWER: Attempting to initialise ACPI cpufreq power management...
> POWER: Initialized successfully for lcore 2 power management
> POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
> POWER: Lcore id 128 can not exceeds 127
> POWER: Initialized successfully for lcore 2 power management
> POWER: Power management of lcore 2 is in use
> POWER: Invalid lcore ID
> POWER: NULL buffer supplied
> POWER: Buffer size is not enough
> POWER: Invalid lcore ID
> POWER: Invalid lcore ID
> POWER: Invalid frequency index 64, which should be less than 3
> POWER: Invalid frequency index 3, which should be less than 3
> POWER: Failed to enable turbo on lcore 2
> POWER: Invalid lcore ID
> POWER: Invalid lcore ID
> POWER: Invalid lcore ID
> POWER: Invalid lcore ID
> Turbo not available on lcore 2, skipping test
> POWER: Power management of lcore 2 has exited from 'userspace' mode and been set back to the original
> POWER: Power management of lcore 2 is not used
> POWER: Lcore id 128 can not exceeds 127
> Test OK
> ############

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq
  2021-07-14 10:13       ` David Hunt
@ 2021-07-14 10:29         ` Richael Zhuang
  0 siblings, 0 replies; 9+ messages in thread
From: Richael Zhuang @ 2021-07-14 10:29 UTC (permalink / raw)
  To: David Hunt, dev; +Cc: zhiminx.huang, stable, nd, nd



> -----Original Message-----
> From: David Hunt <david.hunt@intel.com>
> Sent: Wednesday, July 14, 2021 6:14 PM
> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
> Cc: zhiminx.huang@intel.com; stable@dpdk.org; nd <nd@arm.com>
> Subject: Re: [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling
> cur freq
> 
> 
> On 14/7/2021 10:23 AM, Richael Zhuang wrote:
> >
> >> -----Original Message-----
> >> From: David Hunt <david.hunt@intel.com>
> >> Sent: Wednesday, July 14, 2021 5:15 PM
> >> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
> >> Cc: zhiminx.huang@intel.com; stable@dpdk.org
> >> Subject: Re: [PATCH v1 1/1] test/power: check cpuinfo cur freq before
> >> scaling cur freq
> >>
> >>
> >> On 14/7/2021 9:44 AM, Richael Zhuang wrote:
> >>> For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> >>> scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> >>> And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> >>> same. For acpi_cpufreq and cppc_cpufreq, we should check
> >>> cpuinfo_cur_freq. So here checking cpuinfo_cur_freq before
> >>> scaling_cur_freq to make sure it works for all cpufreq drivers.
> >>>
> >>> Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> >>> Cc: david.hunt@intel.com
> >>> Cc: stable@dpdk.org
> >>>
> >>> Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> >>> ---
> >>>    app/test/test_power_cpufreq.c | 4 ++--
> >>>    1 file changed, 2 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/app/test/test_power_cpufreq.c
> >>> b/app/test/test_power_cpufreq.c index b8fc53925c..f56abb6f86 100644
> >>> --- a/app/test/test_power_cpufreq.c
> >>> +++ b/app/test/test_power_cpufreq.c
> >>> @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t
> >>> idx,
> >> bool turbo)
> >>>    	int i;
> >>>
> >>>    	if (snprintf(fullpath, sizeof(fullpath),
> >>> -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> >>> +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> >>>    		return 0;
> >>>    	}
> >>>    	f = fopen(fullpath, "r");
> >>>    	if (f == NULL) {
> >>>    		if (snprintf(fullpath, sizeof(fullpath),
> >>> -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0)
> >> {
> >>> +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0)
> >> {
> >>>    			return 0;
> >>>    		}
> >>>    		f = fopen(fullpath, "r");
> >>
> >> Hi Richael, I don't think this patch fixes anything. If the scaling
> >> file is not available, it will then attempt to open the cpuinfo file.
> >> Changing the order does not address the underlying issue.
> >>
> >> It looks like the test is failing in check_cur_req, which is only
> >> rounding for cppc driver. I think it also needs to round for the
> >> other drivers. I've just checked intel_pstate driver now, and it
> >> needs the rounding. I would think that acpi driver also needs it.
> >> I'll do a bit more investigation and see if I can  change to acpi and attempt
> to confirm that all drivers need the rounding.
> >>
> >> Rgds,
> >> Dave.
> >>
> >>
> > Hi David,
> > For acpi_cpufreq and cppc_cpufreq, both two files exist. So with the
> current code, it will check the scaling_cur_freq. But I think for this two drivers,
> it should check cpuinfo_cur_freq but not scaling_cur_freq. From my system,
> for acpi cpufreq, the value in cpuinfo_cur_freq and scaling_cur_freq are not
> the same.
> 
> 
> Ah OK. Now I see different the values in scaling_cur_freq and
> cpuinfo_cur_freq on a system here with acpi driver. The cpuinfo_cur_freq is
> already rounded, but the scaling_cur_freq is not.
> 
> # cat /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq
> 800259
> # cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq
> 800000
> 
> So I think it would make sense to include the re-order of the filenames as you
> suggest, but maybe also add rounding for the pstate driver, as that is needed.
> 
> -               if (env == PM_ENV_CPPC_CPUFREQ) {
> +               if ((env == PM_ENV_CPPC_CPUFREQ) || (env ==
> PM_ENV_PSTATE_CPUFREQ)) {
> 
> That avoids the complication of the acpi_cpufreq driver when turbo is
> enabled (2301000 for any turbo freq).
> 
> I've just run the test with the two changes (reorder filenames and round
> on pstate), and the power_cpufreq_autotest passes on both intel_pstate
> and acpi-cpufreq driver systems.
> 
> Regards,
> Dave.
> 
> 
Hi David,
For I don't have a platform with pstate available now,  I can’t  verify it by myself. Thanks for your test and conclusion, I will include" env ==
 PM_ENV_PSTATE_CPUFREQ".

> 
> >    So if not changing the check sequence, the result is:
> > ##########
> > RTE>>power_cpufreq_autotest
> > POWER: Env isn't set yet!
> > POWER: Attempting to initialise ACPI cpufreq power management...
> > POWER: Initialized successfully for lcore 2 power management
> > POWER: Power management of lcore 2 has exited from 'userspace' mode
> and been set back to the original
> > POWER: Lcore id 128 can not exceeds 127
> > POWER: Initialized successfully for lcore 2 power management
> > POWER: Power management of lcore 2 is in use
> > POWER: Invalid lcore ID
> > POWER: NULL buffer supplied
> > POWER: Buffer size is not enough
> > POWER: Invalid lcore ID
> > POWER: Power management of lcore 2 has exited from 'userspace' mode
> and been set back to the original
> > Test Failed
> > RTE>>quit
> > #############
> >
> > But after changing the check sequence, the result is OK from my test:
> > ######
> > RTE>>power_cpufreq_autotest
> > POWER: Env isn't set yet!
> > POWER: Attempting to initialise ACPI cpufreq power management...
> > POWER: Initialized successfully for lcore 2 power management
> > POWER: Power management of lcore 2 has exited from 'userspace' mode
> and been set back to the original
> > POWER: Lcore id 128 can not exceeds 127
> > POWER: Initialized successfully for lcore 2 power management
> > POWER: Power management of lcore 2 is in use
> > POWER: Invalid lcore ID
> > POWER: NULL buffer supplied
> > POWER: Buffer size is not enough
> > POWER: Invalid lcore ID
> > POWER: Invalid lcore ID
> > POWER: Invalid frequency index 64, which should be less than 3
> > POWER: Invalid frequency index 3, which should be less than 3
> > POWER: Failed to enable turbo on lcore 2
> > POWER: Invalid lcore ID
> > POWER: Invalid lcore ID
> > POWER: Invalid lcore ID
> > POWER: Invalid lcore ID
> > Turbo not available on lcore 2, skipping test
> > POWER: Power management of lcore 2 has exited from 'userspace' mode
> and been set back to the original
> > POWER: Power management of lcore 2 is not used
> > POWER: Lcore id 128 can not exceeds 127
> > Test OK
> > ############

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dpdk-stable] [PATCH v2 1/1] test/power: fix CPU frequency check
       [not found]   ` <20210714104405.23917-1-richael.zhuang@arm.com>
@ 2021-07-14 10:44     ` Richael Zhuang
  2021-07-14 12:23       ` David Hunt
  0 siblings, 1 reply; 9+ messages in thread
From: Richael Zhuang @ 2021-07-14 10:44 UTC (permalink / raw)
  To: dev; +Cc: zhiminx.huang, david.hunt, stable

For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
same. For acpi_cpufreq and cppc_cpufreq, we should check
cpuinfo_cur_freq but not scaling_cur_freq. So here change the
check sequence to make sure it works for all cpufreq drivers.
Besides, add rounding for pstate driver.

Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
 app/test/test_power_cpufreq.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index b8fc53925c..1a9549527e 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
 	int i;
 
 	if (snprintf(fullpath, sizeof(fullpath),
-		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
+		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
 		return 0;
 	}
 	f = fopen(fullpath, "r");
 	if (f == NULL) {
 		if (snprintf(fullpath, sizeof(fullpath),
-			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
+			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
 			return 0;
 		}
 		f = fopen(fullpath, "r");
@@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
 		freq_conv = cur_freq;
 
 		env = rte_power_get_env();
-		if (env == PM_ENV_CPPC_CPUFREQ) {
+		if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) {
 			/* convert the frequency to nearest 100000 value
 			 * Ex: if cur_freq=1396789 then freq_conv=1400000
 			 * Ex: if cur_freq=800030 then freq_conv=800000
-- 
2.20.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v2 1/1] test/power: fix CPU frequency check
  2021-07-14 10:44     ` [dpdk-stable] [PATCH v2 1/1] test/power: fix CPU frequency check Richael Zhuang
@ 2021-07-14 12:23       ` David Hunt
  2021-07-15  1:44         ` Richael Zhuang
  2021-07-20 15:20         ` [dpdk-stable] [dpdk-dev] " David Marchand
  0 siblings, 2 replies; 9+ messages in thread
From: David Hunt @ 2021-07-14 12:23 UTC (permalink / raw)
  To: Richael Zhuang, dev; +Cc: zhiminx.huang, stable

Hi Richael,

On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> same. For acpi_cpufreq and cppc_cpufreq, we should check
> cpuinfo_cur_freq but not scaling_cur_freq. So here change the
> check sequence to make sure it works for all cpufreq drivers.
> Besides, add rounding for pstate driver.
>
> Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> Cc: david.hunt@intel.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> ---
>   app/test/test_power_cpufreq.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
> index b8fc53925c..1a9549527e 100644
> --- a/app/test/test_power_cpufreq.c
> +++ b/app/test/test_power_cpufreq.c
> @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
>   	int i;
>   
>   	if (snprintf(fullpath, sizeof(fullpath),
> -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
>   		return 0;
>   	}
>   	f = fopen(fullpath, "r");
>   	if (f == NULL) {
>   		if (snprintf(fullpath, sizeof(fullpath),
> -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
>   			return 0;
>   		}
>   		f = fopen(fullpath, "r");
> @@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
>   		freq_conv = cur_freq;
>   
>   		env = rte_power_get_env();
> -		if (env == PM_ENV_CPPC_CPUFREQ) {
> +		if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) {
>   			/* convert the frequency to nearest 100000 value
>   			 * Ex: if cur_freq=1396789 then freq_conv=1400000
>   			 * Ex: if cur_freq=800030 then freq_conv=800000


Looks good now. I ran the power_cpufreq_autotest test on both the 
acpi-cpufreq and pstate drivers, and both passed.

Acked-by: David Hunt <david.hunt@intel.com>





^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v2 1/1] test/power: fix CPU frequency check
  2021-07-14 12:23       ` David Hunt
@ 2021-07-15  1:44         ` Richael Zhuang
  2021-07-20 15:20         ` [dpdk-stable] [dpdk-dev] " David Marchand
  1 sibling, 0 replies; 9+ messages in thread
From: Richael Zhuang @ 2021-07-15  1:44 UTC (permalink / raw)
  To: David Hunt, dev; +Cc: zhiminx.huang, stable, nd, nd



> -----Original Message-----
> From: David Hunt <david.hunt@intel.com>
> Sent: Wednesday, July 14, 2021 8:23 PM
> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
> Cc: zhiminx.huang@intel.com; stable@dpdk.org
> Subject: Re: [PATCH v2 1/1] test/power: fix CPU frequency check
> 
> Hi Richael,
> 
> On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> > For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> > scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> > And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> > same. For acpi_cpufreq and cppc_cpufreq, we should check
> > cpuinfo_cur_freq but not scaling_cur_freq. So here change the check
> > sequence to make sure it works for all cpufreq drivers.
> > Besides, add rounding for pstate driver.
> >
> > Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> > Cc: david.hunt@intel.com
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> > ---
> >   app/test/test_power_cpufreq.c | 6 +++---
> >   1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/app/test/test_power_cpufreq.c
> > b/app/test/test_power_cpufreq.c index b8fc53925c..1a9549527e 100644
> > --- a/app/test/test_power_cpufreq.c
> > +++ b/app/test/test_power_cpufreq.c
> > @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
> bool turbo)
> >   	int i;
> >
> >   	if (snprintf(fullpath, sizeof(fullpath),
> > -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> > +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> >   		return 0;
> >   	}
> >   	f = fopen(fullpath, "r");
> >   	if (f == NULL) {
> >   		if (snprintf(fullpath, sizeof(fullpath),
> > -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0)
> {
> > +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0)
> {
> >   			return 0;
> >   		}
> >   		f = fopen(fullpath, "r");
> > @@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
> bool turbo)
> >   		freq_conv = cur_freq;
> >
> >   		env = rte_power_get_env();
> > -		if (env == PM_ENV_CPPC_CPUFREQ) {
> > +		if (env == PM_ENV_CPPC_CPUFREQ || env ==
> PM_ENV_PSTATE_CPUFREQ) {
> >   			/* convert the frequency to nearest 100000 value
> >   			 * Ex: if cur_freq=1396789 then freq_conv=1400000
> >   			 * Ex: if cur_freq=800030 then freq_conv=800000
> 
> 
> Looks good now. I ran the power_cpufreq_autotest test on both the acpi-
> cpufreq and pstate drivers, and both passed.
> 
> Acked-by: David Hunt <david.hunt@intel.com>
> 
Thank you for testing it!
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2 1/1] test/power: fix CPU frequency check
  2021-07-14 12:23       ` David Hunt
  2021-07-15  1:44         ` Richael Zhuang
@ 2021-07-20 15:20         ` David Marchand
  1 sibling, 0 replies; 9+ messages in thread
From: David Marchand @ 2021-07-20 15:20 UTC (permalink / raw)
  To: Richael Zhuang; +Cc: David Hunt, dev, zhiminx.huang, dpdk stable

On Wed, Jul 14, 2021 at 2:23 PM David Hunt <david.hunt@intel.com> wrote:
> On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> > For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> > scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> > And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> > same. For acpi_cpufreq and cppc_cpufreq, we should check
> > cpuinfo_cur_freq but not scaling_cur_freq. So here change the
> > check sequence to make sure it works for all cpufreq drivers.
> > Besides, add rounding for pstate driver.
> >
> > Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> Acked-by: David Hunt <david.hunt@intel.com>

Applied, thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-07-20 15:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20210714084407.51979-1-richael.zhuang@arm.com>
2021-07-14  8:44 ` [dpdk-stable] [PATCH v1 1/1] test/power: check cpuinfo cur freq before scaling cur freq Richael Zhuang
2021-07-14  9:15   ` David Hunt
2021-07-14  9:23     ` Richael Zhuang
2021-07-14 10:13       ` David Hunt
2021-07-14 10:29         ` Richael Zhuang
     [not found]   ` <20210714104405.23917-1-richael.zhuang@arm.com>
2021-07-14 10:44     ` [dpdk-stable] [PATCH v2 1/1] test/power: fix CPU frequency check Richael Zhuang
2021-07-14 12:23       ` David Hunt
2021-07-15  1:44         ` Richael Zhuang
2021-07-20 15:20         ` [dpdk-stable] [dpdk-dev] " David Marchand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).