On 2026/08/18 14:12, Connor Kite wrote:
Add a memory-isolation property to NetdevPassOptions and
NetDevVhostUserOptions in net.json. This property will
be used for vhost-user devices to disable access to guest
memory from vhost-user backends.
The cover letter says multiqueue is not supported but the code just
continues with multiqueue and breaks.
Regards,
Akihiko Odaki
Signed-off-by: Connor Kite <[email protected]>
---
net/passt.c | 5 +++++
net/vhost-user.c | 3 +++
qapi/net.json | 16 ++++++++++++----
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/net/passt.c b/net/passt.c
index 35ec6ad6de..7bcd47ad32 100644
--- a/net/passt.c
+++ b/net/passt.c
@@ -741,6 +741,11 @@ int net_init_passt(const Netdev *netdev, const char *name,
if (netdev->u.passt.has_vhost_user && netdev->u.passt.vhost_user) {
bool memory_isolation = false;
+ if (netdev->u.passt.has_memory_isolation &&
+ netdev->u.passt.memory_isolation) {
+ memory_isolation = true;
+ }
+
if (net_passt_vhost_user_init(s, memory_isolation, errp) == -1) {
qemu_del_net_client(nc);
return -1;
diff --git a/net/vhost-user.c b/net/vhost-user.c
index b6ee9ed297..bd33decadf 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -477,6 +477,9 @@ int net_init_vhost_user(const Netdev *netdev, const char
*name,
return -1;
}
+ memory_isolation = vhost_user_opts->has_memory_isolation ?
+ vhost_user_opts->memory_isolation : false;
+
return net_vhost_user_init(peer, "vhost_user", name, chr, queues,
memory_isolation);
}
diff --git a/qapi/net.json b/qapi/net.json
index 1a6382825c..add7cb5408 100644
--- a/qapi/net.json
+++ b/qapi/net.json
@@ -213,6 +213,9 @@
#
# @param: parameter to pass to passt command
#
+# @memory-isolation: isolate guest memory from vhost-user back-end
+# (default: false) (Since 11.2)
+#
# Since: 10.1
##
{ 'struct': 'NetdevPasstOptions',
@@ -250,7 +253,8 @@
'*ipv6': 'bool',
'*tcp-ports': ['PasstPortForward'],
'*udp-ports': ['PasstPortForward'],
- '*param': ['PasstParameter'] },
+ '*param': ['PasstParameter'],
+ '*memory-isolation': 'bool'},
'if': 'CONFIG_PASST' }
##
@@ -685,13 +689,17 @@
# @queues: number of queues to be created for multiqueue vhost-user
# (default: 1) (Since 2.5)
#
+# @memory-isolation: isolate guest memory from vhost-user back-end
+# (default: false) (Since 11.2)
+#
# Since: 2.1
##
{ 'struct': 'NetdevVhostUserOptions',
'data': {
- 'chardev': 'str',
- '*vhostforce': 'bool',
- '*queues': 'int' } }
+ 'chardev': 'str',
+ '*vhostforce': 'bool',
+ '*queues': 'int',
+ '*memory-isolation': 'bool' } }
##
# @NetdevVhostVDPAOptions: