Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
52ffe64
virtio-msg: clarify device number vs device ID (Peter Hilber)
bertrand-marquis Feb 20, 2026
3a70c3a
virtio-msg: fix minor grammar in device topology (Peter Hilber)
bertrand-marquis Feb 20, 2026
d677fc8
virtio-msg: use “transport revision” consistently (Peter Hilber)
bertrand-marquis Feb 20, 2026
c0020f1
virtio-msg: use active voice for reserved header bits (Peter Hilber)
bertrand-marquis Feb 20, 2026
7eafee2
virtio-msg: drop duplicate GET_DEVICE_INFO requirement (Peter Hilber)
bertrand-marquis Feb 20, 2026
623334c
virtio-msg: clarify removal handling (Peter Hilber)
bertrand-marquis Feb 20, 2026
4c75e07
virtio-msg: allow zero devices per bus instance (Peter Hilber)
bertrand-marquis Feb 20, 2026
2bbad99
virtio-msg: add note on config vs virtqueue data (Demi Marie Obenour)
bertrand-marquis Feb 20, 2026
094111b
virtio-msg: rename READY to ADDED in bus device events (Parav Pandit)
bertrand-marquis Feb 20, 2026
1e1e817
virtio-msg: clarify transport feature negotiation (Peter Hilber)
bertrand-marquis Feb 20, 2026
f50fe3c
virtio-msg: clarify generation count reset semantics (Peter Hilber)
bertrand-marquis Feb 20, 2026
f462169
virtio-msg: clarify notification wording (Peter Hilber)
bertrand-marquis Feb 20, 2026
2d8c995
virtio-msg: require EVENT_USED unless polling (Peter Hilber)
bertrand-marquis Feb 20, 2026
4b8c483
virtio-msg: drop RESET_VQUEUE-before-reprogramming (Peter Hilber)
bertrand-marquis Feb 20, 2026
b783fc5
virtio-msg: align admin vq field widths (Peter Hilber)
bertrand-marquis Feb 20, 2026
818142e
virtio-msg: proposal: clarify echoed fields (Peter Hilber)
bertrand-marquis Feb 20, 2026
6ba8c70
virtio-msg: require clearing FEATURES_OK (Peter Hilber)
bertrand-marquis Feb 20, 2026
21aeb49
virtio-msg: widen GET_SHM fields (Peter Hilber)
bertrand-marquis Feb 20, 2026
3e007fd
virtio-msg: clarify EVENT_CONFIG ranges (Peter Hilber)
bertrand-marquis Feb 20, 2026
f109559
virtio-msg: streamline DEVICE_NEEDS_RESET text (Peter Hilber)
bertrand-marquis Feb 20, 2026
835ef71
virtio-msg: scope msg_id validation (Peter Hilber)
bertrand-marquis Feb 20, 2026
07b0d08
virtio-msg: drop FEATURES_OK sentence (Peter Hilber)
bertrand-marquis Feb 20, 2026
ba844e9
virtio-msg: note bus-level errors (Demi Marie Obenour)
bertrand-marquis Feb 20, 2026
3c685b6
virtio-msg: reframe ordering responses (Demi Marie Obenour)
bertrand-marquis Feb 23, 2026
8a529c0
virtio-msg: clarify virtqueue data path (Demi Marie Obenour)
bertrand-marquis Feb 23, 2026
0df8574
virtio-msg: allow out-of-order events (Demi Marie Obenour)
bertrand-marquis Feb 23, 2026
773970f
virtio-msg: use physical address terminology (Demi Marie Obenour)
bertrand-marquis Feb 23, 2026
95fdde9
virtio-msg: scope generation count uniqueness to resets
bertrand-marquis Feb 23, 2026
6e78b47
virtio-msg: define EVENT_CONFIG offset/length for status-only updates
bertrand-marquis Feb 23, 2026
d56ac78
virtio-msg: align EVENT_USED omission criteria
bertrand-marquis Feb 23, 2026
fd5cb94
virtio-msg: clarify reserved header bits rule
bertrand-marquis Feb 23, 2026
d276102
virtio-msg: raise minimum max message size to 48 bytes
bertrand-marquis Feb 23, 2026
b87c319
virtio-msg: relax bus device-number validation
bertrand-marquis Feb 23, 2026
2030616
virtio-msg: trim GET_DEVICE_INFO description
bertrand-marquis Feb 23, 2026
e3e634f
virtio-msg: clarify max size table vs recommended cap
bertrand-marquis Feb 23, 2026
b33da36
virtio-msg: fix Bus Specific Messages label path
bertrand-marquis Feb 23, 2026
1a5cf20
virtio-msg: keep EVENT_* messages with OOB signaling (Demi Marie Oben…
bertrand-marquis Feb 25, 2026
2359b91
virtio-msg: propose UUID in GET_DEVICE_INFO (Parav Pandit)
bertrand-marquis Feb 25, 2026
1cc53be
virtio-msg: widen header msg_size and dev_num fields
bertrand-marquis Feb 25, 2026
ab4b48d
virtio-msg: recommend delaying device-number reuse (Peter Hilber)
bertrand-marquis Feb 25, 2026
bf520b5
virtio-msg: add flags-based SET_VQUEUE updates and queue state (Peter…
bertrand-marquis Feb 25, 2026
d201a32
virtio-msg: clarify reset completion checks for SET_DEVICE_STATUS (Pe…
bertrand-marquis Feb 25, 2026
477c04a
virtio-msg: make strict config generation optional (Peter Hilber)
bertrand-marquis Feb 25, 2026
e990c04
virtio-msg: centralize config semantics profiles (Peter Hilber)
bertrand-marquis Feb 25, 2026
909445a
virtio-msg: keep EVENT_CONFIG affected range optional (Demi Marie Obe…
bertrand-marquis Feb 25, 2026
84e84d3
virtio-msg: restore 16-bit msg_size header field (HVAC group discussion)
bertrand-marquis Mar 6, 2026
75f6433
virtio-msg: gate SET_CONFIG mismatch refusal to strict profile (HVAC …
bertrand-marquis Mar 6, 2026
51d0e64
virtio-msg: clarify per-device request/response ordering baseline (HV…
bertrand-marquis Mar 6, 2026
9ecc00f
virtio-msg: constrain virtqueue reconfiguration transitions (HVAC gro…
bertrand-marquis Mar 6, 2026
f1ed24f
virtio-msg: use feature-block count in GET_DEVICE_INFO (Andrei Homescu)
bertrand-marquis Mar 6, 2026
722a057
virtio-msg: define empty payload for rejected SET_CONFIG (Andrei Home…
bertrand-marquis Mar 6, 2026
4cc756b
virtio-msg: use direct slot/byte units in GET_DEVICES (Andrei Homescu)
bertrand-marquis Mar 6, 2026
0930c92
virtio-msg: add known bus implementation examples section (Michael S.…
bertrand-marquis Mar 6, 2026
f81d612
virtio-msg: cap GET_DEVICES response count to request (Andrei Homescu)
bertrand-marquis Mar 6, 2026
7a2d5e2
email: adjust cover letter for PATCH v2
bertrand-marquis Mar 6, 2026
0e07350
virtio-msg: clarify dev_num semantics for bus and transport messages
bertrand-marquis Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 68 additions & 28 deletions .prjinfo/sendmail/cover.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,41 +61,81 @@ We also anticipate a few more:
* Usable on any Xen system (including x86 where FF-A does not exist)
* Using Xen events and page grants

* virtio-msg over admin virtqueues
* This allows any virtio-pci device that supports admin virtqueues to also
support a virtio-msg bus that supports sub devices
* [We are looking for collaborators for this work]

Changes since RFC2:

Spec Functional:
* Made the common message header 8 bytes and added a token for optional use
when parallel outstanding requests are possible
* Made the 8 byte fields align to 8 byte offsets.
This effects the {SET,GET}_VQUEUE messages
* Many conformance cases have been tightened.

Spec Editorial:
* Major restructure to better align with virtio spec
* Conformance model now matches other transports
* Use C structures to define messages instead of tables
* Added a section to describe how responses are matched to requests
This includes the use of the new token field
* Redefined / better described error handling between transport and bus
layers to eliminate the need for the bus to generate fake response messages
* Included editorial feedback from RFC2
Changes since v1 (virtio-msg-patch1):

First, thank you for the detailed comments and broad interest on v1.
We tried to address most review feedback in this revision.

Spec Functional / Behavioral:
* Finalized the common header and addressing model:
* Keep a 16-byte common header
* Use 64-bit device numbers
* Use 16-bit msg_size plus 16-bit reserved
Rationale: support larger device-number spaces while keeping the transport
control-plane focused and limiting payload-transfer misuse.
* Clarified device-number lifecycle guidance so bus implementations should avoid
immediate reuse of removed device numbers.
Rationale: reduce races with delayed messages when devices are removed and
added again.
* Added explicit configuration semantics profiles (baseline vs strict) and
gated generation-mismatch refusal to strict-profile negotiation.
Rationale: preserve compatibility in baseline mode while allowing stricter
behavior when both sides opt in.
* Clarified SET_CONFIG rejection behavior: rejected responses return
length = 0 with no payload.
Rationale: remove ambiguity for parser/validation behavior.
* Clarified ordering baseline: request/response ordering is per-device in-order,
while events remain asynchronous and may arrive at any time relative to
request/response traffic.
Rationale: keep baseline semantics clear without over-constraining event
delivery.
* Clarified virtqueue state transitions and reconfiguration rules around
enabled/disabled/reset states.
Rationale: align with transport expectations and avoid ambiguous queue-state
behavior.
* Clarified GET_DEVICE_INFO semantics using number of 32-bit feature blocks and
aligned related field descriptions.
Rationale: improve consistency and implementation clarity.
* Clarified GET_DEVICES semantics using direct slot/byte units; responders must
not return count values larger than requested; smaller (including zero) count
is valid when appropriate.
Rationale: make enumeration behavior precise while allowing efficient sparse
windows.
* Added an informative known bus implementation examples section, including the
FF-A bus specification reference and current implementation examples.
Rationale: provide concrete context without constraining architecture choices.
* Tightened conformance text to match the clarified normative behavior.

Open topics and ongoing discussion:
* Out-of-order/performance extensions:
We kept the baseline behavior simple in this revision. If clear performance
benefit is demonstrated, we are open to introducing an optional feature-bit
based extension in a follow-up patch set.
* Graceful device removal sequencing:
Current direction is to handle graceful-remove sequencing in bus-specific
specifications. We welcome feedback on whether any additional transport-level
guidance would be useful.
* Transport scope and mapping guidance:
Discussion is still ongoing on transport-vs-bus binding scope, response
status modeling, and mapping guidance for mmio/pci/vhost-user/KVM userspace
cases. We are collecting reviewer input before deciding on follow-up text.
* Potential virtio-msg over virtqueues for PCI/MMIO:
This is still early discussion, including whether admin virtqueues should be
used or extended for this purpose. There is no consensus yet, and we are
continuing design exploration.

Eco-system:
* Added virtio-msg-loopback demo
* Arm has published the first draft of the virtio-msg over FFA spec [6]
* Arm has published a second draft of the virtio message bus over FF-A
specification (1.0 ALP1), aligned with the virtio-msg v1 proposal [6]
* virtio-msg over FFA has been demonstrated with both Trusty and OP-TEE
secure world
* LKML RFC has been sent [7]
* QEMU RFC has been sent [8]

This is the first non-RFC patch series. The known short comings have been
addressed. We ask for review in earnest on this series and thank you for
any feedback you can provide.
This is v2 of the first non-RFC patch series. We are grateful for the review
feedback and interest received on v1, and we ask for continued review on this
revision.

Background info and work in progress implementations:
* HVAC project page with intro slides [1]
Expand All @@ -117,6 +157,6 @@ with this version of the spec.
[3] https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git/log/?h=virtio/msg
[4] https://github.com/edgarigl/qemu/commits/edgar/virtio-msg-rfc/
[5] https://github.com/arnopo/open-amp/commits/virtio-msg/
[6] https://documentation-service.arm.com/static/68f647791134f773ab3f0a7c
[6] https://developer.arm.com/documentation/den0153/0101/
[7] https://lore.kernel.org/all/cover.1753865268.git.viresh.kumar@linaro.org/
[8] https://mail.gnu.org/archive/html/qemu-devel/2025-10/msg07438.html
5 changes: 3 additions & 2 deletions conformance.tex
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ \section{Conformance Targets}\label{sec:Conformance / Conformance Targets}
\begin{itemize}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Revisions / Driver Limits}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Versioning and Forward Compatibility / Driver}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Configuration Generation Count / Driver}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Configuration Semantics Profiles / Driver}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Endianness / Driver}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Common Message Format / Driver}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over Messages / Device Initialization / Overview / Driver}
Expand Down Expand Up @@ -285,7 +285,7 @@ \section{Conformance Targets}\label{sec:Conformance / Conformance Targets}
\begin{itemize}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Revisions / Device Limits}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Versioning and Forward Compatibility / Device}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Configuration Generation Count / Device}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Configuration Semantics Profiles / Device}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Feature Blocks / Device}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Error Signaling / Device}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over Messages / Basic Concepts / Endianness / Device}
Expand Down Expand Up @@ -360,6 +360,7 @@ \section{Conformance Targets}\label{sec:Conformance / Conformance Targets}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Device Discovery / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Device Operation / Driver Notifications / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Device Operation / Device Notifications / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Transport Messages / Runtime Notifications / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Device Operation / Hotplug and Removal / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Transport Messages / VIRTIO_MSG_EVENT_AVAIL / Bus}
\item \ref{busnormative:Virtio Transport Options / Virtio Over Messages / Bus Messages / GET_DEVICES / Bus}
Expand Down
Loading
Loading