@@ -34,7 +34,8 @@ standardize a bus level message for that.
3434
3535We are working on a few reusable bus implementations:
3636
37- * virtio-msg-ffa based on Arm FF-A interface for use between:
37+ * virtio-msg-ffa based on Arm's Virtio Message Bus over FF-A specification [6]
38+ for use between:
3839 * normal world and secure world
3940 * host and VM or VM to VM
4041 * Can be used w/ or with out a hypervisor
@@ -61,41 +62,125 @@ We also anticipate a few more:
6162 * Usable on any Xen system (including x86 where FF-A does not exist)
6263 * Using Xen events and page grants
6364
64- * virtio-msg over admin virtqueues
65- * This allows any virtio-pci device that supports admin virtqueues to also
66- support a virtio-msg bus that supports sub devices
67- * [We are looking for collaborators for this work]
68-
69- Changes since RFC2:
70-
71- Spec Functional:
72- * Made the common message header 8 bytes and added a token for optional use
73- when parallel outstanding requests are possible
74- * Made the 8 byte fields align to 8 byte offsets.
75- This effects the {SET,GET}_VQUEUE messages
76- * Many conformance cases have been tightened.
77-
78- Spec Editorial:
79- * Major restructure to better align with virtio spec
80- * Conformance model now matches other transports
81- * Use C structures to define messages instead of tables
82- * Added a section to describe how responses are matched to requests
83- This includes the use of the new token field
84- * Redefined / better described error handling between transport and bus
85- layers to eliminate the need for the bus to generate fake response messages
86- * Included editorial feedback from RFC2
65+ This series keeps 16-bit dev_num values per bus instance; deployments that need
66+ more than roughly 65k devices can scale by using multiple bus instances.
67+
68+ Changes since v1 (virtio-msg-patch1):
69+
70+ First, thank you for the detailed comments and broad interest on v1.
71+ This revision incorporates review feedback from Peter Hilber, Demi Marie
72+ Obenour, Parav Pandit, Andrei Homescu, Manos Pitsidianakis, Michael S.
73+ Tsirkin, Bill Mills, and HVAC group discussion.
74+
75+ Highlights of the changes since v1:
76+
77+ * Finalized the common transport message model:
78+ * keep the 8-byte common header
79+ * keep 16-bit device numbers per bus instance and a 16-bit msg_size field
80+ * note that deployments needing more than roughly 65k devices can scale by
81+ using multiple bus instances
82+ * clarify common message-ID encoding and validation boundaries
83+ * define request completion more precisely: a valid supported request
84+ completes with exactly one protocol response or a transport-visible failure
85+ * clarify request/response correlation and token handling, including the
86+ rule that devices echo the request token while the bus may rewrite tokens
87+ internally for correlation
88+ * preserve per driver/device request ordering while still allowing
89+ bus-correlated out-of-order responses and events
90+
91+ * Clarified bus versus transport responsibilities and enumeration:
92+ * keep GET_DEVICE_INFO as a driver-issued transport message, and GET_DEVICES,
93+ PING, and EVENT_DEVICE as optional bus messages
94+ * require bus messages to use dev_num = 0
95+ * bus implementations must expose only validated device numbers, may expose
96+ zero devices, and should delay device-number reuse to reduce races
97+ * EVENT_DEVICE is defined as a bus-originated ADDED/REMOVED hotplug event
98+ * tighten GET_DEVICES enumeration semantics, including empty-bitmap cases and
99+ guaranteed forward progress
100+
101+ * Tightened initialization and feature negotiation:
102+ * use transport revision terminology consistently
103+ * keep GET_DEVICE_INFO as the only transport message used for early discovery
104+ * align the rest of initialization with the core virtio flow through reset,
105+ status progression, feature negotiation, FEATURES_OK verification, and
106+ DRIVER_OK
107+ * keep transport feature bits separate from device feature negotiation
108+ * define GET_DEVICE_FEATURES as reporting the feature blocks offered by the
109+ device
110+ * require GET_DEVICE_INFO to report enough feature blocks to cover all
111+ offered feature bits and bound max_virtqueues to 65536
112+ * define SET_DRIVER_FEATURES as addressed-block updates carrying the subset
113+ chosen by the driver, which may be built up across multiple requests before
114+ FEATURES_OK
115+ * keep FEATURES_OK as the point where the device accepts or rejects the
116+ negotiated set
117+ * make GET_SHM mandatory for devices to implement while keeping driver use
118+ optional, and align the shared-memory identifier semantics with core virtio
119+
120+ * Aligned configuration, status, and notification behavior with core virtio:
121+ * align GET_CONFIG, SET_CONFIG, EVENT_CONFIG, and device status handling more
122+ closely with the core virtio model
123+ * keep VIRTIO_MSG_F_STRICT_CONFIG_GENERATION only as optional strict-profile
124+ SET_CONFIG mismatch enforcement
125+ * define nonzero SET_CONFIG writes as all-or-nothing and rejected writes as
126+ length = 0 with no payload
127+ * limit EVENT_CONFIG status notifications to device-originated asynchronous
128+ status changes
129+ * make polling-only operation explicit, with EVENT_AVAIL and EVENT_USED used
130+ only when the endpoints choose event-driven notification
131+ * keep bus-side forwarding, polling, or synthesized notification delivery
132+ transparent to the transport-visible model
133+
134+ * Refined virtqueue and reset semantics:
135+ * clarify queue-state transitions, SET_VQUEUE update behavior, and invalid
136+ reconfiguration cases
137+ * make SET_VQUEUE and RESET_VQUEUE reject cases deterministic no-op empty
138+ responses
139+ * define deterministic GET_VQUEUE zero-sentinel responses for unavailable,
140+ unimplemented, and out-of-range queues
141+ * define local admin virtqueue field semantics and the EVENT_AVAIL
142+ notification-data encoding more precisely
143+ * clarify reset-completion checks without duplicating the core virtio reset
144+ rules
145+
146+ * Improved document quality:
147+ * reworked the chapter to better match existing virtio specification style
148+ * removed duplicated or ambiguous requirements
149+ * fixed label paths, direct field references, punctuation, and ambiguous
150+ wording
151+ * added informative known bus implementation examples
152+ * completed conformance coverage for driver, device, and bus clauses
153+ * normalized punctuation and wording for consistency with the rest of the spec
154+
155+ Open topics and ongoing discussion:
156+ * Out-of-order/performance extensions:
157+ We kept the baseline behavior simple in this revision. If clear performance
158+ benefit is demonstrated, we are open to introducing an optional feature-bit
159+ based extension in a follow-up patch set.
160+ * Graceful device removal sequencing:
161+ Current direction is to handle graceful-remove sequencing in bus-specific
162+ specifications. We welcome feedback on whether any additional transport-level
163+ guidance would be useful.
164+ * Transport scope and mapping guidance:
165+ Discussion is still ongoing on transport-vs-bus binding scope, response
166+ status modeling, and mapping guidance for mmio/pci/vhost-user/KVM userspace
167+ cases. We are collecting reviewer input before deciding on follow-up text.
168+ * Potential virtio-msg over virtqueues for PCI/MMIO:
169+ This is still early discussion, including whether admin virtqueues should be
170+ used or extended for this purpose. There is no consensus yet, and we are
171+ continuing design exploration.
87172
88173Eco-system:
89174* Added virtio-msg-loopback demo
90- * Arm has published the first draft of the virtio-msg over FFA spec [6]
91- * virtio-msg over FFA has been demonstrated with both Trusty and OP-TEE
175+ * Arm has published the Virtio Message Bus over FF-A specification [6]
176+ * virtio-msg over FF-A has been demonstrated with both Trusty and OP-TEE
92177 secure world
93178* LKML RFC has been sent [7]
94179* QEMU RFC has been sent [8]
95180
96- This is the first non-RFC patch series. The known short comings have been
97- addressed. We ask for review in earnest on this series and thank you for
98- any feedback you can provide .
181+ This is v2 of the first non-RFC patch series. We are grateful for the review
182+ feedback and interest received on v1, and we ask for continued review on this
183+ revision .
99184
100185Background info and work in progress implementations:
101186* HVAC project page with intro slides [1]
@@ -117,6 +202,6 @@ with this version of the spec.
117202[3] https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git/log/?h=virtio/msg
118203[4] https://github.com/edgarigl/qemu/commits/edgar/virtio-msg-rfc/
119204[5] https://github.com/arnopo/open-amp/commits/virtio-msg/
120- [6] https://documentation-service .arm.com/static/68f647791134f773ab3f0a7c
205+ [6] https://developer .arm.com/documentation/den0153/0101/
121206[7] https://lore.kernel.org/all/cover.1753865268.git.viresh.kumar@linaro.org/
122207[8] https://mail.gnu.org/archive/html/qemu-devel/2025-10/msg07438.html
0 commit comments