examples/power: fix ack for enable/disable turbo

Message ID 20200211105008.4540-1-david.hunt@intel.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series examples/power: fix ack for enable/disable turbo |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation fail apply issues

Commit Message

Hunt, David Feb. 11, 2020, 10:50 a.m. UTC
  When a VM sends a command through virtio-serial to enable/disable
turbo, it is successfully enabled or disabled, yet the response to the
VM is NACK. This is because all the library frequency change APIs return
1 for success (change in frequency), 0 for success (no change in
frequency) and -1 for failure. However the turbo enable/disable APIs just
return 0 for success and -1 for failure.

Fix the handling of the return code to treat ">= 0" as success, and
send an ACK. Only send NACK when < 0 (failure).

Fixes: 0de94bcac7fc ("examples/vm_power: send confirmation cmd to guest")
Signed-off-by: David Hunt <david.hunt@intel.com>
---
 examples/vm_power_manager/channel_monitor.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Yao, Lei A Feb. 11, 2020, 11:48 p.m. UTC | #1
> -----Original Message-----
> From: Hunt, David <david.hunt@intel.com>
> Sent: Tuesday, February 11, 2020 6:50 PM
> To: dev@dpdk.org; Hunt, David <david.hunt@intel.com>
> Cc: Yao, Lei A <lei.a.yao@intel.com>; stable@dpdk.org
> Subject: [PATCH] examples/power: fix ack for enable/disable turbo
> 
> When a VM sends a command through virtio-serial to enable/disable turbo, it
> is successfully enabled or disabled, yet the response to the VM is NACK. This
> is because all the library frequency change APIs return
> 1 for success (change in frequency), 0 for success (no change in
> frequency) and -1 for failure. However the turbo enable/disable APIs just
> return 0 for success and -1 for failure.
> 
> Fix the handling of the return code to treat ">= 0" as success, and send an
> ACK. Only send NACK when < 0 (failure).
> 
> Fixes: 0de94bcac7fc ("examples/vm_power: send confirmation cmd to
> guest")
> Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Lei Yao<lei.a.yao@intel.com>
> ---
>  examples/vm_power_manager/channel_monitor.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/examples/vm_power_manager/channel_monitor.c
> b/examples/vm_power_manager/channel_monitor.c
> index 090c2a98b..1d00a6cf6 100644
> --- a/examples/vm_power_manager/channel_monitor.c
> +++ b/examples/vm_power_manager/channel_monitor.c
> @@ -868,7 +868,7 @@ process_request(struct channel_packet *pkt, struct
> channel_info *chan_info)
>  		if (valid_unit) {
>  			ret = send_ack_for_received_cmd(pkt,
>  					chan_info,
> -					scale_res > 0 ?
> +					scale_res >= 0 ?
>  						CPU_POWER_CMD_ACK :
>  						CPU_POWER_CMD_NACK);
>  			if (ret < 0)
> --
> 2.17.1
  
David Marchand Feb. 13, 2020, 3:25 p.m. UTC | #2
On Tue, Feb 11, 2020 at 11:50 AM David Hunt <david.hunt@intel.com> wrote:
> When a VM sends a command through virtio-serial to enable/disable
> turbo, it is successfully enabled or disabled, yet the response to the
> VM is NACK. This is because all the library frequency change APIs return
> 1 for success (change in frequency), 0 for success (no change in
> frequency) and -1 for failure. However the turbo enable/disable APIs just
> return 0 for success and -1 for failure.
>
> Fix the handling of the return code to treat ">= 0" as success, and
> send an ACK. Only send NACK when < 0 (failure).
>
> Fixes: 0de94bcac7fc ("examples/vm_power: send confirmation cmd to guest")
Cc: stable@dpdk.org

> Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Lei Yao<lei.a.yao@intel.com>

Applied, thanks.
  

Patch

diff --git a/examples/vm_power_manager/channel_monitor.c b/examples/vm_power_manager/channel_monitor.c
index 090c2a98b..1d00a6cf6 100644
--- a/examples/vm_power_manager/channel_monitor.c
+++ b/examples/vm_power_manager/channel_monitor.c
@@ -868,7 +868,7 @@  process_request(struct channel_packet *pkt, struct channel_info *chan_info)
 		if (valid_unit) {
 			ret = send_ack_for_received_cmd(pkt,
 					chan_info,
-					scale_res > 0 ?
+					scale_res >= 0 ?
 						CPU_POWER_CMD_ACK :
 						CPU_POWER_CMD_NACK);
 			if (ret < 0)