From: David Hunt <david.hunt@intel.com>
To: david.hunt@intel.com
Cc: dev@dpdk.org, Marcin Hajkowski <marcinx.hajkowski@intel.com>
Subject: [dpdk-dev] [PATCH v2 1/4] power: extend guest channel for query freq
Date: Fri, 27 Sep 2019 13:15:58 +0100 [thread overview]
Message-ID: <20190927121601.23661-2-david.hunt@intel.com> (raw)
In-Reply-To: <20190927121601.23661-1-david.hunt@intel.com>
From: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Extend incoming packet reading API with new packet
type which carries CPU frequencies.
Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
---
lib/librte_power/channel_commands.h | 21 +++++++++++++++++++++
lib/librte_power/guest_channel.c | 27 ++++++++++++++++-----------
lib/librte_power/guest_channel.h | 22 +++++++++++++++++-----
3 files changed, 54 insertions(+), 16 deletions(-)
diff --git a/lib/librte_power/channel_commands.h b/lib/librte_power/channel_commands.h
index d81216b42..e461d9c0d 100644
--- a/lib/librte_power/channel_commands.h
+++ b/lib/librte_power/channel_commands.h
@@ -12,6 +12,8 @@ extern "C" {
#include <stdint.h>
#include <stdbool.h>
+/* --- Incoming messages --- */
+
/* Valid Commands */
#define CPU_POWER 1
#define CPU_POWER_CONNECT 2
@@ -26,10 +28,19 @@ extern "C" {
#define CPU_POWER_ENABLE_TURBO 5
#define CPU_POWER_DISABLE_TURBO 6
+/* CPU Power Queries */
+#define CPU_POWER_QUERY_FREQ_LIST 7
+#define CPU_POWER_QUERY_FREQ 8
+
+/* --- Outgoing messages --- */
+
/* Generic Power Command Response */
#define CPU_POWER_CMD_ACK 1
#define CPU_POWER_CMD_NACK 2
+/* CPU Power Query Responses */
+#define CPU_POWER_FREQ_LIST 3
+
#define HOURS 24
#define MAX_VFS 10
@@ -82,6 +93,16 @@ struct channel_packet {
struct t_boost_status t_boost_status;
};
+struct channel_packet_freq_list {
+ uint64_t resource_id; /**< core_num, device */
+ uint32_t unit; /**< scale down/up/min/max */
+ uint32_t command; /**< Power, IO, etc */
+ char vm_name[VM_MAX_NAME_SZ];
+
+ uint32_t freq_list[MAX_VCPU_PER_VM];
+ uint8_t num_vcpu;
+};
+
#ifdef __cplusplus
}
diff --git a/lib/librte_power/guest_channel.c b/lib/librte_power/guest_channel.c
index 888423891..439cd2f38 100644
--- a/lib/librte_power/guest_channel.c
+++ b/lib/librte_power/guest_channel.c
@@ -129,13 +129,15 @@ int rte_power_guest_channel_send_msg(struct channel_packet *pkt,
return guest_channel_send_msg(pkt, lcore_id);
}
-int power_guest_channel_read_msg(struct channel_packet *pkt,
- unsigned int lcore_id)
+int power_guest_channel_read_msg(void *pkt,
+ size_t pkt_len,
+ unsigned int lcore_id)
{
int ret;
struct pollfd fds;
- void *buffer = pkt;
- int buffer_len = sizeof(*pkt);
+
+ if (pkt_len == 0 || pkt == NULL)
+ return -1;
fds.fd = global_fds[lcore_id];
fds.events = POLLIN;
@@ -161,29 +163,32 @@ int power_guest_channel_read_msg(struct channel_packet *pkt,
return -1;
}
- while (buffer_len > 0) {
+ while (pkt_len > 0) {
ret = read(global_fds[lcore_id],
- buffer, buffer_len);
+ pkt, pkt_len);
+
if (ret < 0) {
if (errno == EINTR)
continue;
return -1;
}
+
if (ret == 0) {
RTE_LOG(ERR, GUEST_CHANNEL, "Expected more data, but connection has been closed.\n");
return -1;
}
- buffer = (char *)buffer + ret;
- buffer_len -= ret;
+ pkt = (char *)pkt + ret;
+ pkt_len -= ret;
}
return 0;
}
-int rte_power_guest_channel_receive_msg(struct channel_packet *pkt,
- unsigned int lcore_id)
+int rte_power_guest_channel_receive_msg(void *pkt,
+ size_t pkt_len,
+ unsigned int lcore_id)
{
- return power_guest_channel_read_msg(pkt, lcore_id);
+ return power_guest_channel_read_msg(pkt, pkt_len, lcore_id);
}
void
diff --git a/lib/librte_power/guest_channel.h b/lib/librte_power/guest_channel.h
index 61e142289..025961606 100644
--- a/lib/librte_power/guest_channel.h
+++ b/lib/librte_power/guest_channel.h
@@ -17,6 +17,7 @@ extern "C" {
*
* @param path
* The path to the serial device on the filesystem
+ *
* @param lcore_id
* lcore_id.
*
@@ -73,7 +74,11 @@ int rte_power_guest_channel_send_msg(struct channel_packet *pkt,
* from the host endpoint.
*
* @param pkt
- * Pointer to a populated struct channel_packet
+ * Pointer to channel_packet or
+ * channel_packet_freq_list struct.
+ *
+ * @param pkt_len
+ * Size of expected data packet.
*
* @param lcore_id
* lcore_id.
@@ -82,7 +87,8 @@ int rte_power_guest_channel_send_msg(struct channel_packet *pkt,
* - 0 on success.
* - Negative on error.
*/
-int power_guest_channel_read_msg(struct channel_packet *pkt,
+int power_guest_channel_read_msg(void *pkt,
+ size_t pkt_len,
unsigned int lcore_id);
/**
@@ -90,7 +96,11 @@ int power_guest_channel_read_msg(struct channel_packet *pkt,
* from the host endpoint.
*
* @param pkt
- * Pointer to a populated struct channel_packet
+ * Pointer to channel_packet or
+ * channel_packet_freq_list struct.
+ *
+ * @param pkt_len
+ * Size of expected data packet.
*
* @param lcore_id
* lcore_id.
@@ -101,8 +111,10 @@ int power_guest_channel_read_msg(struct channel_packet *pkt,
*/
__rte_experimental
int
-rte_power_guest_channel_receive_msg(struct channel_packet *pkt,
- unsigned int lcore_id);
+rte_power_guest_channel_receive_msg(void *pkt,
+ size_t pkt_len,
+ unsigned int lcore_id);
+
#ifdef __cplusplus
}
--
2.17.1
next prev parent reply other threads:[~2019-09-27 12:16 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-03 17:15 [PATCH 0/4] Frequency list query Hajkowski
2019-04-03 17:15 ` [PATCH 1/4] power: extend guest channel for query freq Hajkowski
2019-09-27 12:15 ` [dpdk-dev] [PATCH v2 0/4] frequency list query from guest David Hunt
2019-09-27 12:15 ` David Hunt [this message]
2019-09-30 9:54 ` [dpdk-dev] [PATCH v2 1/4] power: extend guest channel for query freq Hunt, David
2019-09-27 12:15 ` [dpdk-dev] [PATCH v2 2/4] power: process cpu freq query David Hunt
2019-09-27 12:16 ` [dpdk-dev] [PATCH v2 3/4] power: add mechanism to disable queries David Hunt
2019-09-27 12:16 ` [dpdk-dev] [PATCH v2 4/4] power: add cmd to query CPU freq David Hunt
2019-09-27 12:38 ` Hunt, David
2019-10-27 19:59 ` [dpdk-dev] [PATCH v2 0/4] frequency list query from guest Thomas Monjalon
2019-04-03 17:15 ` [PATCH 2/4] power: process cpu freq. query Hajkowski
2019-04-03 17:15 ` [PATCH 3/4] power: add mechanism to disable queries Hajkowski
2019-04-03 17:16 ` [PATCH 4/4] power: add cmd to query CPU freq Hajkowski
2019-09-27 9:52 ` [dpdk-dev] " Daly, Lee
2019-09-27 10:19 ` Ferruh Yigit
2019-09-27 10:40 ` Hunt, David
2019-07-04 19:57 ` [dpdk-dev] [PATCH 0/4] Frequency list query Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190927121601.23661-2-david.hunt@intel.com \
--to=david.hunt@intel.com \
--cc=dev@dpdk.org \
--cc=marcinx.hajkowski@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.