All of lore.kernel.org
 help / color / mirror / Atom feed
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 2/3] examples/power_manager: send cpu capabilities on vm request
Date: Mon, 30 Sep 2019 14:00:42 +0100	[thread overview]
Message-ID: <20190930130043.2885-3-david.hunt@intel.com> (raw)
In-Reply-To: <20190930130043.2885-1-david.hunt@intel.com>

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

Send capabilities for requested cores.

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>
---
 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 0ae62835f..11b6db1c0 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"
@@ -737,6 +738,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,
@@ -845,6 +900,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.1


  parent reply	other threads:[~2019-09-30 13:01 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     ` David Hunt [this message]
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 ` [dpdk-dev] [PATCH 2/3] examples/power_manager: send cpu capabilities on vm request Hajkowski
2019-09-30 10:56   ` 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=20190930130043.2885-3-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.