[PATCH RFC 04/15] net/vhost-user: add memory isolation
Connor Kite <[email protected]> Thu, 23 Jul 2026 15:30:03 -0700
| Newsgroups | dev.linux.lists.virtio-fs,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
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 devices. It will be passed into vhost_user_init() in a future patch. Signed-off-by: Connor Kite <[email protected]> --- net/passt.c | 7 +++++++ net/vhost-user.c | 4 ++++ qapi/net.json | 15 +++++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/net/passt.c b/net/passt.c index 45440c399b..ce80186883 100644 --- a/net/passt.c +++ b/net/passt.c @@ -735,6 +735,13 @@ int net_init_passt(const Netdev *netdev, const char *name, s->pidfile = pidfile; if (netdev->u.passt.has_vhost_user && netdev->u.passt.vhost_user) { + bool memory_isolation G_GNUC_UNUSED = false; + + if (netdev->u.passt.has_memory_isolation && + netdev->u.passt.memory_isolation) { + memory_isolation = true; + } + if (net_passt_vhost_user_init(s, errp) == -1) { qemu_del_net_client(nc); return -1; diff --git a/net/vhost-user.c b/net/vhost-user.c index 2d0fc49b4d..8fa303f901 100644 --- a/net/vhost-user.c +++ b/net/vhost-user.c @@ -459,6 +459,7 @@ int net_init_vhost_user(const Netdev *netdev, const char *name, int queues; const NetdevVhostUserOptions *vhost_user_opts; Chardev *chr; + bool memory_isolation G_GNUC_UNUSED; assert(netdev->type == NET_CLIENT_DRIVER_VHOST_USER); vhost_user_opts = &netdev->u.vhost_user; @@ -476,5 +477,8 @@ 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); } diff --git a/qapi/net.json b/qapi/net.json index 1a6382825c..4588c7014b 100644 --- a/qapi/net.json +++ b/qapi/net.json @@ -213,6 +213,9 @@ # # @param: parameter to pass to passt command # +# @memory-isolation: enable memory isolation. Only has effect if +# using vhost-user. (default: false) +# # 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,16 @@ # @queues: number of queues to be created for multiqueue vhost-user # (default: 1) (Since 2.5) # +# @memory-isolation: isolate guest memory from device (default: false) +# # Since: 2.1 ## { 'struct': 'NetdevVhostUserOptions', 'data': { - 'chardev': 'str', - '*vhostforce': 'bool', - '*queues': 'int' } } + 'chardev': 'str', + '*vhostforce': 'bool', + '*queues': 'int', + '*memory-isolation': 'bool' } } ## # @NetdevVhostVDPAOptions: -- 2.43.0