[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/5] qmp: Added qemu-ebpf-rss-path command.
|
From: |
Andrew Melnychenko |
|
Subject: |
[PATCH 5/5] qmp: Added qemu-ebpf-rss-path command. |
|
Date: |
Tue, 13 Jul 2021 18:37:58 +0300 |
New qmp command to query ebpf helper.
It's crucial that qemu and helper are in sync and in touch.
Technically helper should pass eBPF fds that qemu may accept.
And different qemu's builds may have different eBPF programs and helpers.
Qemu returns helper that should "fit" to virtio-net.
Signed-off-by: Andrew Melnychenko <andrew@daynix.com>
---
monitor/qmp-cmds.c | 32 ++++++++++++++++++++++++++++++++
qapi/misc.json | 33 +++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+)
diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
index f7d64a6457..c042ab5466 100644
--- a/monitor/qmp-cmds.c
+++ b/monitor/qmp-cmds.c
@@ -40,6 +40,7 @@
#include "qapi/qmp/qerror.h"
#include "hw/mem/memory-device.h"
#include "hw/acpi/acpi_dev_interface.h"
+#include "qemu-helper-stamp-utils.h"
NameInfo *qmp_query_name(Error **errp)
{
@@ -351,3 +352,34 @@ void qmp_display_reload(DisplayReloadOptions *arg, Error
**errp)
abort();
}
}
+
+HelperPathList *qmp_query_helper_paths(Error **errp)
+{
+ HelperPathList *ret = NULL;
+ struct {
+ const char *helper;
+ bool check_stamp;
+ } helpers_list[] = {
+#ifdef CONFIG_EBPF
+ { "qemu-ebpf-rss-helper", true },
+#endif
+ { "qemu-pr-helper", false },
+ { "qemu-bridge-helper", false },
+ { NULL, false },
+ }, *helper_iter;
+ helper_iter = helpers_list;
+
+ for (; helper_iter->helper != NULL; ++helper_iter) {
+ char *path = qemu_find_helper(helper_iter->helper,
+ helper_iter->check_stamp);
+ if (path) {
+ HelperPath *helper = g_new0(HelperPath, 1);
+ helper->name = g_strdup(helper_iter->helper);
+ helper->path = path;
+
+ QAPI_LIST_PREPEND(ret, helper);
+ }
+ }
+
+ return ret;
+}
diff --git a/qapi/misc.json b/qapi/misc.json
index 156f98203e..9aaf8fbcca 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -519,3 +519,36 @@
'data': { '*option': 'str' },
'returns': ['CommandLineOptionInfo'],
'allow-preconfig': true }
+
+##
+# @HelperPath:
+#
+# Name of the helper and binary location.
+##
+{ 'struct': 'HelperPath',
+ 'data': {'name': 'str', 'path': 'str'} }
+
+##
+# @query-helper-paths:
+#
+# Query helper paths. Initially, this command was added for
+# qemu-ebpf-rss-helper. The qemu would check "the stamp" and
+# returns proper helper.
+#
+# Returns: list of object that contains name and path for helper.
+#
+# Since: 6.1
+#
+# Example:
+#
+# -> { "execute": "query-helper-paths" }
+# <- { "return": [
+# {
+# "name": "qemu-ebpf-rss-helper",
+# "path": "/usr/local/libexec/qemu-ebpf-rss-helper"
+# }
+# ]
+# }
+#
+##
+{ 'command': 'query-helper-paths', 'returns': ['HelperPath'] }
--
2.31.1
- [PATCH 0/5] ebpf: Added ebpf helper for libvirtd., Andrew Melnychenko, 2021/07/13
- [PATCH 2/5] virtio-net: Added property to load eBPF RSS with fds., Andrew Melnychenko, 2021/07/13
- [PATCH 4/5] ebpf_rss_helper: Added helper for eBPF RSS., Andrew Melnychenko, 2021/07/13
- [PATCH 3/5] qmp: Added the helper stamp check., Andrew Melnychenko, 2021/07/13
- [PATCH 5/5] qmp: Added qemu-ebpf-rss-path command.,
Andrew Melnychenko <=
- [PATCH 1/5] ebpf: Added eBPF initialization by fds and map update., Andrew Melnychenko, 2021/07/13
- Re: [PATCH 0/5] ebpf: Added ebpf helper for libvirtd., Andrew Melnichenko, 2021/07/22