From: "Iván Ezequiel Rodriguez" <ivanrwcm25@gmail.com>
To: Jonathan Corbet <corbet@lwn.net>, Bartosz Golaszewski <brgl@kernel.org>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org, "Mickaël Salaün" <mic@digikod.net>,
"Jason Wang" <jasowangio@gmail.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Iván Ezequiel Rodriguez" <ivanrwcm25@gmail.com>
Subject: [PATCH 5/7] docs: vduse: align documentation with current uapi and driver
Date: Mon, 31 Aug 2026 11:31:23 -0300 [thread overview]
Message-ID: <20260831143125.151360-6-ivanrwcm25@gmail.com> (raw)
In-Reply-To: <20260831143125.151360-1-ivanrwcm25@gmail.com>
Update supported device IDs (block, net, fs), all six read/write message
types, the VDUSE_VQ_INJECT_IRQ ioctl name, and VQ_SETUP group vs asid
usage per include/uapi/linux/vduse.h.
Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
Documentation/userspace-api/vduse.rst | 33 +++++++++++++++++----------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/Documentation/userspace-api/vduse.rst b/Documentation/userspace-api/vduse.rst
index 81479d47c8b9..d316857ca5bd 100644
--- a/Documentation/userspace-api/vduse.rst
+++ b/Documentation/userspace-api/vduse.rst
@@ -11,11 +11,10 @@ to make the device emulation more secure, the emulated vDPA device's
control path is handled in the kernel and only the data path is
implemented in the userspace.
-Note that only virtio block device is supported by VDUSE framework now,
-which can reduce security risks when the userspace process that implements
-the data path is run by an unprivileged user. The support for other device
-types can be added after the security issue of corresponding device driver
-is clarified or fixed in the future.
+Note that virtio block, network, and filesystem device types are supported
+by the VDUSE framework. Other device types may be added after the security
+implications of the corresponding device driver are clarified or fixed in
+the future.
Create/Destroy VDUSE devices
----------------------------
@@ -135,7 +134,8 @@ module as follows:
return 0;
}
-There are now three types of messages introduced by VDUSE framework:
+The following control message types may be delivered via read(2) on
+/dev/vduse/$NAME:
- VDUSE_GET_VQ_STATE: Get the state for virtqueue, userspace should return
avail index for split virtqueue or the device/driver ring wrap counters and
@@ -151,6 +151,15 @@ There are now three types of messages introduced by VDUSE framework:
IOVA range, userspace should firstly remove the old mapping, then setup the new
mapping via the VDUSE_IOTLB_GET_FD ioctl.
+- VDUSE_SET_VQ_GROUP_ASID: Notify userspace to change the address space of a
+ virtqueue group (API version 1).
+
+- VDUSE_SET_VQ_READY: Notify userspace that a virtqueue should become ready or
+ not ready (when VDUSE_F_QUEUE_READY is negotiated).
+
+- VDUSE_SUSPEND: Notify userspace that the device is being suspended (when
+ VDUSE_F_SUSPEND is negotiated).
+
After DRIVER_OK status bit is set via the VDUSE_SET_STATUS message, userspace is
able to start the dataplane processing as follows:
@@ -227,7 +236,7 @@ able to start the dataplane processing as follows:
described by the descriptors in the descriptor table should be also mapped into
userspace via the VDUSE_IOTLB_GET_FD ioctl before accessing.
-5. Inject an interrupt for specific virtqueue with the VDUSE_INJECT_VQ_IRQ ioctl
+5. Inject an interrupt for specific virtqueue with the VDUSE_VQ_INJECT_IRQ ioctl
after the used ring is filled.
Enabling ASID (API version 1)
@@ -238,11 +247,11 @@ version 1. Set it up with ioctl(VDUSE_SET_API_VERSION) on `/dev/vduse/control`
and pass `VDUSE_API_VERSION_1` before creating a new VDUSE instance with
ioctl(VDUSE_CREATE_DEV).
-Afterwards, you can use the member asid of ioctl(VDUSE_VQ_SETUP) argument to
-select the address space of the IOTLB you are querying. The driver could
-change the address space of any virtqueue group by using the
-VDUSE_SET_VQ_GROUP_ASID VDUSE message type, and the VDUSE instance needs to
-reply with VDUSE_REQ_RESULT_OK if it was possible to change it.
+Afterwards, ioctl(VDUSE_VQ_SETUP) takes a virtqueue group index in
+struct vduse_vq_config::group. The driver can change the address space
+of any virtqueue group by using the VDUSE_SET_VQ_GROUP_ASID message type,
+and the VDUSE instance needs to reply with VDUSE_REQ_RESULT_OK if it was
+possible to change it.
Similarly, you can use ioctl(VDUSE_IOTLB_GET_FD2) to obtain the file descriptor
describing an IOVA region of a specific ASID. Example usage:
--
2.43.0
next prev parent reply other threads:[~2026-08-31 14:32 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:31 [PATCH 0/7] docs/abi: align userspace documentation with implementation Iván Ezequiel Rodriguez
2026-08-31 14:31 ` [PATCH 1/7] docs: futex2: fix documented errno names for futex_waitv Iván Ezequiel Rodriguez
2026-08-31 14:31 ` [PATCH 2/7] docs: landlock: fix ENOMSG condition in create_ruleset kernel-doc Iván Ezequiel Rodriguez
2026-08-31 14:31 ` [PATCH 3/7] docs: gpio: note lineinfo padding must be zero filled Iván Ezequiel Rodriguez
2026-09-01 8:24 ` Bartosz Golaszewski
2026-08-31 14:31 ` [PATCH 4/7] docs: dma-buf-heaps: fix CMA heap name typo Iván Ezequiel Rodriguez
2026-08-31 14:31 ` Iván Ezequiel Rodriguez [this message]
2026-09-15 19:48 ` [PATCH 5/7] docs: vduse: align documentation with current uapi and driver Jonathan Corbet
2026-08-31 14:31 ` [PATCH 6/7] docs: ioctl: fix stale NVMe registry entry and note N conflict Iván Ezequiel Rodriguez
2026-08-31 14:31 ` [PATCH 7/7] gpio: cdev: return EOPNOTSUPP when HTE is unavailable Iván Ezequiel Rodriguez
2026-09-01 8:25 ` [PATCH 0/7] docs/abi: align userspace documentation with implementation Bartosz Golaszewski
2026-09-15 19:47 ` Jonathan Corbet
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=20260831143125.151360-6-ivanrwcm25@gmail.com \
--to=ivanrwcm25@gmail.com \
--cc=brgl@kernel.org \
--cc=corbet@lwn.net \
--cc=jasowangio@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mic@digikod.net \
--cc=sumit.semwal@linaro.org \
/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.