DPDK patches and discussions
 help / color / mirror / Atom feed
From: Hajkowski <marcinx.hajkowski@intel.com>
To: david.hunt@intel.com
Cc: dev@dpdk.org, Marcin Hajkowski <marcinx.hajkowski@intel.com>
Subject: [dpdk-dev] [PATCH 2/3] examples/power_manager: send cpu capabilities on vm request
Date: Thu, 30 May 2019 18:15:16 +0200	[thread overview]
Message-ID: <20190530161517.11916-3-marcinx.hajkowski@intel.com> (raw)
In-Reply-To: <20190530161517.11916-1-marcinx.hajkowski@intel.com>

From: Marcin Hajkowski <marcinx.hajkowski@intel.com>

Send capabilities for requested cores.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
---
 examples/vm_power_manager/channel_monitor.c | 67 +++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/examples/vm_power_manager/channel_monitor.c b/examples/vm_power_manager/channel_monitor.c
index bfd9cc38d..731b3b480 100644
--- a/examples/vm_power_manager/channel_monitor.c
+++ b/examples/vm_power_manager/channel_monitor.c
@@ -29,6 +29,7 @@
 #include <rte_cycles.h>
 #include <rte_ethdev.h>
 #include <rte_pmd_i40e.h>
+#include <rte_power.h>
 
 #include <libvirt/libvirt.h>
 #include "channel_monitor.h"
@@ -704,6 +705,60 @@ send_freq(struct channel_packet *pkt,
 			chan_info);
 }
 
+static int
+send_capabilities(struct channel_packet *pkt,
+		struct channel_info *chan_info,
+		bool list_requested)
+{
+	unsigned int vcore_id = pkt->resource_id;
+	struct channel_packet_caps_list channel_pkt_caps_list;
+	struct vm_info info;
+	struct rte_power_core_capabilities caps;
+	int ret;
+
+	if (get_info_vm(pkt->vm_name, &info) != 0)
+		return -1;
+
+	if (!list_requested && vcore_id >= MAX_VCPU_PER_VM)
+		return -1;
+
+	if (!info.allow_query)
+		return -1;
+
+	channel_pkt_caps_list.command = CPU_POWER_CAPS_LIST;
+	channel_pkt_caps_list.num_vcpu = info.num_vcpus;
+
+	if (list_requested) {
+		unsigned int i;
+		for (i = 0; i < info.num_vcpus; i++) {
+			ret = rte_power_get_capabilities(info.pcpu_map[i],
+					&caps);
+			if (ret == 0) {
+				channel_pkt_caps_list.turbo[i] =
+						caps.turbo;
+				channel_pkt_caps_list.priority[i] =
+						caps.priority;
+			} else
+				return -1;
+
+		}
+	} else {
+		ret = rte_power_get_capabilities(info.pcpu_map[vcore_id],
+				&caps);
+		if (ret == 0) {
+			channel_pkt_caps_list.turbo[vcore_id] =
+					caps.turbo;
+			channel_pkt_caps_list.priority[vcore_id] =
+					caps.priority;
+		} else
+			return -1;
+	}
+
+	return write_binary_packet(&channel_pkt_caps_list,
+			sizeof(channel_pkt_caps_list),
+			chan_info);
+}
+
 static int
 send_ack_for_received_cmd(struct channel_packet *pkt,
 		struct channel_info *chan_info,
@@ -812,6 +867,18 @@ process_request(struct channel_packet *pkt, struct channel_info *chan_info)
 			RTE_LOG(ERR, CHANNEL_MONITOR, "Error during frequency sending.\n");
 	}
 
+	if (pkt->command == CPU_POWER_QUERY_CAPS_LIST ||
+		pkt->command == CPU_POWER_QUERY_CAPS) {
+
+		RTE_LOG(INFO, CHANNEL_MONITOR,
+			"Capabilities for %s requested.\n", pkt->vm_name);
+		int ret = send_capabilities(pkt,
+				chan_info,
+				pkt->command == CPU_POWER_QUERY_CAPS_LIST);
+		if (ret < 0)
+			RTE_LOG(ERR, CHANNEL_MONITOR, "Error during sending capabilities.\n");
+	}
+
 	/*
 	 * Return is not checked as channel status may have been set to DISABLED
 	 * from management thread
-- 
2.17.2


  parent reply	other threads:[~2019-05-30 16:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-30 16:15 [dpdk-dev] [PATCH 0/3] Core capabilities query Hajkowski
2019-05-30 16:15 ` [dpdk-dev] [PATCH 1/3] power: add new packet type for capabilities Hajkowski
2019-09-30 10:55   ` Daly, Lee
2019-09-30 13:00   ` [dpdk-dev] [PATCH v2 0/3] Core capabilities query David Hunt
2019-09-30 13:00     ` [dpdk-dev] [PATCH v2 1/3] power: add new packet type for capabilities David Hunt
2019-09-30 13:00     ` [dpdk-dev] [PATCH v2 2/3] examples/power_manager: send cpu capabilities on vm request David Hunt
2019-09-30 13:00     ` [dpdk-dev] [PATCH v2 3/3] examples/power_guest: send request for specified core capabilities David Hunt
2019-09-30 13:04       ` Hunt, David
2019-10-27 20:16     ` [dpdk-dev] [PATCH v2 0/3] Core capabilities query Thomas Monjalon
2019-05-30 16:15 ` Hajkowski [this message]
2019-09-30 10:56   ` [dpdk-dev] [PATCH 2/3] examples/power_manager: send cpu capabilities on vm request Daly, Lee
2019-05-30 16:15 ` [dpdk-dev] [PATCH 3/3] examples/power_guest: send request for specified core capabilities Hajkowski
2019-09-30 10:54   ` Daly, Lee
2019-09-30 12:54   ` Daly, Lee
2019-07-04 19:58 ` [dpdk-dev] [PATCH 0/3] Core capabilities 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=20190530161517.11916-3-marcinx.hajkowski@intel.com \
    --to=marcinx.hajkowski@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    /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 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).