From: Miao Li <miao.li@intel.com>
To: dev@dpdk.org
Cc: chenbo.xia@intel.com, maxime.coquelin@redhat.com, miao.li@intel.com
Subject: [dpdk-dev] [PATCH v3 3/5] net/vhost: implement rte_power_monitor API
Date: Fri, 24 Sep 2021 10:23:07 +0000 [thread overview]
Message-ID: <20210924102309.231304-4-miao.li@intel.com> (raw)
In-Reply-To: <20210924102309.231304-1-miao.li@intel.com>
This patch implements rte_power_monitor API in vhost PMD to reduce
power consumption when no packet come in. According to current semantics
of power monitor, this commit adds a callback function to decide whether
aborts the sleep by checking current value against the expected value and
vhost_get_monitor_addr to provide address to monitor. When no packet come
in, the value of address will not be changed and the running core will
sleep. Once packets arrive, the value of address will be changed and the
running core will wakeup.
Signed-off-by: Miao Li <miao.li@intel.com>
---
drivers/net/vhost/rte_eth_vhost.c | 40 +++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index a202931e9a..eabb0b0519 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -1380,6 +1380,45 @@ eth_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
return rte_vhost_rx_queue_count(vq->vid, vq->virtqueue_id);
}
+#define CLB_VAL_IDX 0
+#define CLB_MSK_IDX 1
+#define CLB_MATCH_IDX 2
+static int
+vhost_monitor_callback(const uint64_t value,
+ const uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ])
+{
+ const uint64_t m = opaque[CLB_MSK_IDX];
+ const uint64_t v = opaque[CLB_VAL_IDX];
+ const uint64_t c = opaque[CLB_MATCH_IDX];
+
+ if (c)
+ return (value & m) == v ? -1 : 0;
+ else
+ return (value & m) == v ? 0 : -1;
+}
+
+static int
+vhost_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
+{
+ struct vhost_queue *vq = rx_queue;
+ struct rte_vhost_power_monitor_cond vhost_pmc;
+ int ret;
+ if (vq == NULL)
+ return -EINVAL;
+ ret = rte_vhost_get_monitor_addr(vq->vid, vq->virtqueue_id,
+ &vhost_pmc);
+ if (ret < 0)
+ return -EINVAL;
+ pmc->addr = vhost_pmc.addr;
+ pmc->opaque[CLB_VAL_IDX] = vhost_pmc.val;
+ pmc->opaque[CLB_MSK_IDX] = vhost_pmc.mask;
+ pmc->opaque[CLB_MATCH_IDX] = vhost_pmc.match;
+ pmc->size = vhost_pmc.size;
+ pmc->fn = vhost_monitor_callback;
+
+ return 0;
+}
+
static const struct eth_dev_ops ops = {
.dev_start = eth_dev_start,
.dev_stop = eth_dev_stop,
@@ -1399,6 +1438,7 @@ static const struct eth_dev_ops ops = {
.xstats_get_names = vhost_dev_xstats_get_names,
.rx_queue_intr_enable = eth_rxq_intr_enable,
.rx_queue_intr_disable = eth_rxq_intr_disable,
+ .get_monitor_addr = vhost_get_monitor_addr,
};
static int
--
2.25.1
next prev parent reply other threads:[~2021-09-24 2:21 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-10 13:05 [dpdk-dev] [PATCH 0/5] CPU Enabling: Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-09-10 13:05 ` [dpdk-dev] [PATCH 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-09-15 8:45 ` Xia, Chenbo
2021-09-17 6:40 ` Li, Miao
2021-09-10 13:05 ` [dpdk-dev] [PATCH 2/5] lib/vhost: " Miao Li
2021-09-15 8:51 ` Xia, Chenbo
2021-09-17 6:51 ` Li, Miao
2021-09-10 13:05 ` [dpdk-dev] [PATCH 3/5] net/vhost: " Miao Li
2021-09-10 13:05 ` [dpdk-dev] [PATCH 4/5] lib/power: modify return of queue_stopped Miao Li
2021-09-10 13:15 ` Burakov, Anatoly
2021-09-10 13:05 ` [dpdk-dev] [PATCH 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-09-10 7:24 ` Maxime Coquelin
2021-09-10 8:33 ` Li, Miao
2021-09-10 8:50 ` David Marchand
2021-09-13 1:41 ` Li, Miao
2021-09-18 13:22 ` [dpdk-dev] [PATCH 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-09-18 13:22 ` [dpdk-dev] [PATCH 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-09-18 13:22 ` [dpdk-dev] [PATCH 2/5] vhost: " Miao Li
2021-09-18 13:22 ` [dpdk-dev] [PATCH 3/5] net/vhost: " Miao Li
2021-09-18 13:22 ` [dpdk-dev] [PATCH 4/5] power: modify return of queue_stopped Miao Li
2021-09-18 13:22 ` [dpdk-dev] [PATCH 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-09-24 10:23 ` [dpdk-dev] [PATCH v3 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-09-24 10:23 ` [dpdk-dev] [PATCH v3 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-09-29 2:34 ` Xia, Chenbo
2021-09-24 10:23 ` [dpdk-dev] [PATCH v3 2/5] vhost: " Miao Li
2021-09-29 3:01 ` Xia, Chenbo
2021-10-11 5:16 ` Li, Miao
2021-09-24 10:23 ` Miao Li [this message]
2021-09-24 10:23 ` [dpdk-dev] [PATCH v3 4/5] power: modify return of queue_stopped Miao Li
2021-09-29 3:03 ` Xia, Chenbo
2021-10-11 5:18 ` Li, Miao
2021-09-24 10:23 ` [dpdk-dev] [PATCH v3 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-09-29 6:53 ` Xia, Chenbo
2021-10-11 5:22 ` Li, Miao
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 2/5] vhost: " Miao Li
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 3/5] net/vhost: " Miao Li
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 4/5] power: modify return of queue_stopped Miao Li
2021-10-12 14:22 ` [dpdk-dev] [PATCH v4 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 2/5] vhost: " Miao Li
2021-10-15 7:38 ` Xia, Chenbo
2021-10-15 8:47 ` Li, Miao
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 3/5] net/vhost: " Miao Li
2021-10-15 7:39 ` Xia, Chenbo
2021-10-15 8:49 ` Li, Miao
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 4/5] power: modify return of queue_stopped Miao Li
2021-10-15 7:47 ` Xia, Chenbo
2021-10-15 8:50 ` Li, Miao
2021-10-15 15:12 ` [dpdk-dev] [PATCH v5 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-10-15 8:13 ` Xia, Chenbo
2021-10-15 8:51 ` Li, Miao
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-10-15 12:57 ` Maxime Coquelin
2021-10-18 1:54 ` Li, Miao
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 2/5] vhost: " Miao Li
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 3/5] net/vhost: " Miao Li
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 4/5] power: modify return of queue_stopped Miao Li
2021-10-15 17:09 ` [dpdk-dev] [PATCH v6 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 0/5] Implement rte_power_monitor API in virtio/vhost PMD Miao Li
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 1/5] net/virtio: implement rte_power_monitor API Miao Li
2021-10-21 16:50 ` Ferruh Yigit
2021-10-22 8:22 ` Li, Miao
2021-10-21 16:59 ` Ferruh Yigit
2021-10-22 8:28 ` Li, Miao
2021-10-22 8:51 ` Li, Miao
2021-10-22 8:59 ` Ferruh Yigit
2021-10-22 9:02 ` Xia, Chenbo
2021-10-22 13:41 ` David Hunt
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 2/5] vhost: " Miao Li
2021-10-19 4:38 ` Xia, Chenbo
2021-10-22 12:34 ` David Hunt
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 3/5] net/vhost: " Miao Li
2021-10-19 4:39 ` Xia, Chenbo
2021-10-22 12:01 ` David Hunt
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 4/5] power: modify return of queue_stopped Miao Li
2021-10-21 16:48 ` Ferruh Yigit
2021-10-22 8:20 ` Li, Miao
2021-10-22 9:01 ` Ferruh Yigit
2021-10-22 9:05 ` Li, Miao
2021-10-22 11:54 ` David Hunt
2021-10-18 14:16 ` [dpdk-dev] [PATCH v7 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-10-19 4:39 ` Xia, Chenbo
2021-10-22 11:50 ` David Hunt
2021-10-21 16:58 ` Ferruh Yigit
2021-10-21 12:35 ` [dpdk-dev] [PATCH v7 0/5] Implement rte_power_monitor API in virtio/vhost PMD Maxime Coquelin
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 0/5] Support power monitor " Miao Li
2021-10-25 7:06 ` Xia, Chenbo
2021-10-28 8:03 ` Maxime Coquelin
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 1/5] net/virtio: support power monitor Miao Li
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 2/5] vhost: add power monitor support API Miao Li
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 3/5] net/vhost: support power monitor Miao Li
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 4/5] power: modify return of queue_stopped Miao Li
2021-10-25 14:47 ` [dpdk-dev] [PATCH v8 5/5] examples/l3fwd-power: support virtio/vhost Miao Li
2021-10-29 19:09 ` Ferruh Yigit
2021-10-29 10:34 ` [dpdk-dev] [PATCH v8 0/5] Support power monitor in virtio/vhost PMD Maxime Coquelin
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=20210924102309.231304-4-miao.li@intel.com \
--to=miao.li@intel.com \
--cc=chenbo.xia@intel.com \
--cc=dev@dpdk.org \
--cc=maxime.coquelin@redhat.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 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).