Skip to content

Commit ba0adf4

Browse files
bertrand-marquiswmamills
authored andcommitted
email: adjust cover letter for PATCH v2
- Replace old "Changes since RFC2" section with "Changes since v1 (virtio-msg-patch1)" - Summarize key v2 spec deltas with rationale tied to review feedback - Mention that we are not increasing dev_num size and mention the solution using multiple bus instances instead. - Add open-topics sectionfor ongoing discussions - Move virtio-msg over virtqueues/admin-vq topic out of anticipated bus implementations into ongoing discussion - Update FF-A reference to DEN0153 1.0 ALP1 link and mention it as the second draft aligned with the virtio-msg v1 proposal - Reword series status text to reflect v2 Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com> Signed-off-by: Bill Mills <bill.mills@linaro.org>
1 parent 3660cff commit ba0adf4

2 files changed

Lines changed: 116 additions & 31 deletions

File tree

.prjinfo/sendmail/cover.txt

Lines changed: 115 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ standardize a bus level message for that.
3434

3535
We 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

88173
Eco-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

100185
Background 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

.prjinfo/sendmail/send.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
PREFIX="PATCH v1"
3+
PREFIX="PATCH v2"
44
SUBJECT="virtio-msg transport layer"
55
ME="$(git config --get user.name) <$(git config --get user.email)>"
66
ME2="Mr Fake <wm.a.mills+mrfake@gmail.com>"

0 commit comments

Comments
 (0)