Skip to content

Commit 4c5a65f

Browse files
mhklinuxliuw
authored andcommitted
Documentation: hyperv: Update spelling and fix typo
Update spelling from "VMbus" to "VMBus" to match Hyper-V product documentation. Also correct typo: "SNP-SEV" should be "SEV-SNP". Signed-off-by: Michael Kelley <[email protected]> Reviewed-by: Easwar Hariharan <[email protected]> Reviewed-by: Bagas Sanjaya <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Wei Liu <[email protected]> Message-ID: <[email protected]>
1 parent 207e03b commit 4c5a65f

File tree

2 files changed

+52
-52
lines changed

2 files changed

+52
-52
lines changed

Documentation/virt/hyperv/overview.rst

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Linux guests communicate with Hyper-V in four different ways:
4040
arm64, these synthetic registers must be accessed using explicit
4141
hypercalls.
4242

43-
* VMbus: VMbus is a higher-level software construct that is built on
43+
* VMBus: VMBus is a higher-level software construct that is built on
4444
the other 3 mechanisms. It is a message passing interface between
4545
the Hyper-V host and the Linux guest. It uses memory that is shared
4646
between Hyper-V and the guest, along with various signaling
@@ -54,8 +54,8 @@ x86/x64 architecture only.
5454

5555
.. _Hyper-V Top Level Functional Spec (TLFS): https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/tlfs
5656

57-
VMbus is not documented. This documentation provides a high-level
58-
overview of VMbus and how it works, but the details can be discerned
57+
VMBus is not documented. This documentation provides a high-level
58+
overview of VMBus and how it works, but the details can be discerned
5959
only from the code.
6060

6161
Sharing Memory
@@ -74,7 +74,7 @@ follows:
7474
physical address space. How Hyper-V is told about the GPA or list
7575
of GPAs varies. In some cases, a single GPA is written to a
7676
synthetic register. In other cases, a GPA or list of GPAs is sent
77-
in a VMbus message.
77+
in a VMBus message.
7878

7979
* Hyper-V translates the GPAs into "real" physical memory addresses,
8080
and creates a virtual mapping that it can use to access the memory.
@@ -133,9 +133,9 @@ only the CPUs actually present in the VM, so Linux does not report
133133
any hot-add CPUs.
134134

135135
A Linux guest CPU may be taken offline using the normal Linux
136-
mechanisms, provided no VMbus channel interrupts are assigned to
137-
the CPU. See the section on VMbus Interrupts for more details
138-
on how VMbus channel interrupts can be re-assigned to permit
136+
mechanisms, provided no VMBus channel interrupts are assigned to
137+
the CPU. See the section on VMBus Interrupts for more details
138+
on how VMBus channel interrupts can be re-assigned to permit
139139
taking a CPU offline.
140140

141141
32-bit and 64-bit
@@ -169,14 +169,14 @@ and functionality. Hyper-V indicates feature/function availability
169169
via flags in synthetic MSRs that Hyper-V provides to the guest,
170170
and the guest code tests these flags.
171171

172-
VMbus has its own protocol version that is negotiated during the
173-
initial VMbus connection from the guest to Hyper-V. This version
172+
VMBus has its own protocol version that is negotiated during the
173+
initial VMBus connection from the guest to Hyper-V. This version
174174
number is also output to dmesg during boot. This version number
175175
is checked in a few places in the code to determine if specific
176176
functionality is present.
177177

178-
Furthermore, each synthetic device on VMbus also has a protocol
179-
version that is separate from the VMbus protocol version. Device
178+
Furthermore, each synthetic device on VMBus also has a protocol
179+
version that is separate from the VMBus protocol version. Device
180180
drivers for these synthetic devices typically negotiate the device
181181
protocol version, and may test that protocol version to determine
182182
if specific device functionality is present.

Documentation/virt/hyperv/vmbus.rst

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
.. SPDX-License-Identifier: GPL-2.0
22
3-
VMbus
3+
VMBus
44
=====
5-
VMbus is a software construct provided by Hyper-V to guest VMs. It
5+
VMBus is a software construct provided by Hyper-V to guest VMs. It
66
consists of a control path and common facilities used by synthetic
77
devices that Hyper-V presents to guest VMs. The control path is
88
used to offer synthetic devices to the guest VM and, in some cases,
@@ -12,9 +12,9 @@ and the synthetic device implementation that is part of Hyper-V, and
1212
signaling primitives to allow Hyper-V and the guest to interrupt
1313
each other.
1414

15-
VMbus is modeled in Linux as a bus, with the expected /sys/bus/vmbus
16-
entry in a running Linux guest. The VMbus driver (drivers/hv/vmbus_drv.c)
17-
establishes the VMbus control path with the Hyper-V host, then
15+
VMBus is modeled in Linux as a bus, with the expected /sys/bus/vmbus
16+
entry in a running Linux guest. The VMBus driver (drivers/hv/vmbus_drv.c)
17+
establishes the VMBus control path with the Hyper-V host, then
1818
registers itself as a Linux bus driver. It implements the standard
1919
bus functions for adding and removing devices to/from the bus.
2020

@@ -49,9 +49,9 @@ synthetic NIC is referred to as "netvsc" and the Linux driver for
4949
the synthetic SCSI controller is "storvsc". These drivers contain
5050
functions with names like "storvsc_connect_to_vsp".
5151

52-
VMbus channels
52+
VMBus channels
5353
--------------
54-
An instance of a synthetic device uses VMbus channels to communicate
54+
An instance of a synthetic device uses VMBus channels to communicate
5555
between the VSP and the VSC. Channels are bi-directional and used
5656
for passing messages. Most synthetic devices use a single channel,
5757
but the synthetic SCSI controller and synthetic NIC may use multiple
@@ -73,7 +73,7 @@ write indices and some control flags, followed by the memory for the
7373
actual ring. The size of the ring is determined by the VSC in the
7474
guest and is specific to each synthetic device. The list of GPAs
7575
making up the ring is communicated to the Hyper-V host over the
76-
VMbus control path as a GPA Descriptor List (GPADL). See function
76+
VMBus control path as a GPA Descriptor List (GPADL). See function
7777
vmbus_establish_gpadl().
7878

7979
Each ring buffer is mapped into contiguous Linux kernel virtual
@@ -102,9 +102,9 @@ resources. For Windows Server 2019 and later, this limit is
102102
approximately 1280 Mbytes. For versions prior to Windows Server
103103
2019, the limit is approximately 384 Mbytes.
104104

105-
VMbus messages
105+
VMBus messages
106106
--------------
107-
All VMbus messages have a standard header that includes the message
107+
All VMBus messages have a standard header that includes the message
108108
length, the offset of the message payload, some flags, and a
109109
transactionID. The portion of the message after the header is
110110
unique to each VSP/VSC pair.
@@ -137,7 +137,7 @@ control message contains a list of GPAs that describe the data
137137
buffer. For example, the storvsc driver uses this approach to
138138
specify the data buffers to/from which disk I/O is done.
139139

140-
Three functions exist to send VMbus messages:
140+
Three functions exist to send VMBus messages:
141141

142142
1. vmbus_sendpacket(): Control-only messages and messages with
143143
embedded data -- no GPAs
@@ -154,20 +154,20 @@ Historically, Linux guests have trusted Hyper-V to send well-formed
154154
and valid messages, and Linux drivers for synthetic devices did not
155155
fully validate messages. With the introduction of processor
156156
technologies that fully encrypt guest memory and that allow the
157-
guest to not trust the hypervisor (AMD SNP-SEV, Intel TDX), trusting
157+
guest to not trust the hypervisor (AMD SEV-SNP, Intel TDX), trusting
158158
the Hyper-V host is no longer a valid assumption. The drivers for
159-
VMbus synthetic devices are being updated to fully validate any
159+
VMBus synthetic devices are being updated to fully validate any
160160
values read from memory that is shared with Hyper-V, which includes
161-
messages from VMbus devices. To facilitate such validation,
161+
messages from VMBus devices. To facilitate such validation,
162162
messages read by the guest from the "in" ring buffer are copied to a
163163
temporary buffer that is not shared with Hyper-V. Validation is
164164
performed in this temporary buffer without the risk of Hyper-V
165165
maliciously modifying the message after it is validated but before
166166
it is used.
167167

168-
VMbus interrupts
168+
VMBus interrupts
169169
----------------
170-
VMbus provides a mechanism for the guest to interrupt the host when
170+
VMBus provides a mechanism for the guest to interrupt the host when
171171
the guest has queued new messages in a ring buffer. The host
172172
expects that the guest will send an interrupt only when an "out"
173173
ring buffer transitions from empty to non-empty. If the guest sends
@@ -177,62 +177,62 @@ interrupts, the host may throttle that guest by suspending its
177177
execution for a few seconds to prevent a denial-of-service attack.
178178

179179
Similarly, the host will interrupt the guest when it sends a new
180-
message on the VMbus control path, or when a VMbus channel "in" ring
180+
message on the VMBus control path, or when a VMBus channel "in" ring
181181
buffer transitions from empty to non-empty. Each CPU in the guest
182-
may receive VMbus interrupts, so they are best modeled as per-CPU
182+
may receive VMBus interrupts, so they are best modeled as per-CPU
183183
interrupts in Linux. This model works well on arm64 where a single
184-
per-CPU IRQ is allocated for VMbus. Since x86/x64 lacks support for
184+
per-CPU IRQ is allocated for VMBus. Since x86/x64 lacks support for
185185
per-CPU IRQs, an x86 interrupt vector is statically allocated (see
186186
HYPERVISOR_CALLBACK_VECTOR) across all CPUs and explicitly coded to
187-
call the VMbus interrupt service routine. These interrupts are
187+
call the VMBus interrupt service routine. These interrupts are
188188
visible in /proc/interrupts on the "HYP" line.
189189

190-
The guest CPU that a VMbus channel will interrupt is selected by the
190+
The guest CPU that a VMBus channel will interrupt is selected by the
191191
guest when the channel is created, and the host is informed of that
192-
selection. VMbus devices are broadly grouped into two categories:
192+
selection. VMBus devices are broadly grouped into two categories:
193193

194-
1. "Slow" devices that need only one VMbus channel. The devices
194+
1. "Slow" devices that need only one VMBus channel. The devices
195195
(such as keyboard, mouse, heartbeat, and timesync) generate
196-
relatively few interrupts. Their VMbus channels are all
196+
relatively few interrupts. Their VMBus channels are all
197197
assigned to interrupt the VMBUS_CONNECT_CPU, which is always
198198
CPU 0.
199199

200-
2. "High speed" devices that may use multiple VMbus channels for
200+
2. "High speed" devices that may use multiple VMBus channels for
201201
higher parallelism and performance. These devices include the
202-
synthetic SCSI controller and synthetic NIC. Their VMbus
202+
synthetic SCSI controller and synthetic NIC. Their VMBus
203203
channels interrupts are assigned to CPUs that are spread out
204204
among the available CPUs in the VM so that interrupts on
205205
multiple channels can be processed in parallel.
206206

207-
The assignment of VMbus channel interrupts to CPUs is done in the
207+
The assignment of VMBus channel interrupts to CPUs is done in the
208208
function init_vp_index(). This assignment is done outside of the
209209
normal Linux interrupt affinity mechanism, so the interrupts are
210210
neither "unmanaged" nor "managed" interrupts.
211211

212-
The CPU that a VMbus channel will interrupt can be seen in
212+
The CPU that a VMBus channel will interrupt can be seen in
213213
/sys/bus/vmbus/devices/<deviceGUID>/ channels/<channelRelID>/cpu.
214214
When running on later versions of Hyper-V, the CPU can be changed
215215
by writing a new value to this sysfs entry. Because the interrupt
216216
assignment is done outside of the normal Linux affinity mechanism,
217217
there are no entries in /proc/irq corresponding to individual
218-
VMbus channel interrupts.
218+
VMBus channel interrupts.
219219

220220
An online CPU in a Linux guest may not be taken offline if it has
221-
VMbus channel interrupts assigned to it. Any such channel
221+
VMBus channel interrupts assigned to it. Any such channel
222222
interrupts must first be manually reassigned to another CPU as
223223
described above. When no channel interrupts are assigned to the
224224
CPU, it can be taken offline.
225225

226-
When a guest CPU receives a VMbus interrupt from the host, the
226+
When a guest CPU receives a VMBus interrupt from the host, the
227227
function vmbus_isr() handles the interrupt. It first checks for
228228
channel interrupts by calling vmbus_chan_sched(), which looks at a
229229
bitmap setup by the host to determine which channels have pending
230230
interrupts on this CPU. If multiple channels have pending
231231
interrupts for this CPU, they are processed sequentially. When all
232232
channel interrupts have been processed, vmbus_isr() checks for and
233-
processes any message received on the VMbus control path.
233+
processes any message received on the VMBus control path.
234234

235-
The VMbus channel interrupt handling code is designed to work
235+
The VMBus channel interrupt handling code is designed to work
236236
correctly even if an interrupt is received on a CPU other than the
237237
CPU assigned to the channel. Specifically, the code does not use
238238
CPU-based exclusion for correctness. In normal operation, Hyper-V
@@ -242,23 +242,23 @@ when Hyper-V will make the transition. The code must work correctly
242242
even if there is a time lag before Hyper-V starts interrupting the
243243
new CPU. See comments in target_cpu_store().
244244

245-
VMbus device creation/deletion
245+
VMBus device creation/deletion
246246
------------------------------
247247
Hyper-V and the Linux guest have a separate message-passing path
248248
that is used for synthetic device creation and deletion. This
249-
path does not use a VMbus channel. See vmbus_post_msg() and
249+
path does not use a VMBus channel. See vmbus_post_msg() and
250250
vmbus_on_msg_dpc().
251251

252252
The first step is for the guest to connect to the generic
253-
Hyper-V VMbus mechanism. As part of establishing this connection,
254-
the guest and Hyper-V agree on a VMbus protocol version they will
253+
Hyper-V VMBus mechanism. As part of establishing this connection,
254+
the guest and Hyper-V agree on a VMBus protocol version they will
255255
use. This negotiation allows newer Linux kernels to run on older
256256
Hyper-V versions, and vice versa.
257257

258258
The guest then tells Hyper-V to "send offers". Hyper-V sends an
259259
offer message to the guest for each synthetic device that the VM
260-
is configured to have. Each VMbus device type has a fixed GUID
261-
known as the "class ID", and each VMbus device instance is also
260+
is configured to have. Each VMBus device type has a fixed GUID
261+
known as the "class ID", and each VMBus device instance is also
262262
identified by a GUID. The offer message from Hyper-V contains
263263
both GUIDs to uniquely (within the VM) identify the device.
264264
There is one offer message for each device instance, so a VM with
@@ -275,7 +275,7 @@ type based on the class ID, and invokes the correct driver to set up
275275
the device. Driver/device matching is performed using the standard
276276
Linux mechanism.
277277

278-
The device driver probe function opens the primary VMbus channel to
278+
The device driver probe function opens the primary VMBus channel to
279279
the corresponding VSP. It allocates guest memory for the channel
280280
ring buffers and shares the ring buffer with the Hyper-V host by
281281
giving the host a list of GPAs for the ring buffer memory. See
@@ -285,7 +285,7 @@ Once the ring buffer is set up, the device driver and VSP exchange
285285
setup messages via the primary channel. These messages may include
286286
negotiating the device protocol version to be used between the Linux
287287
VSC and the VSP on the Hyper-V host. The setup messages may also
288-
include creating additional VMbus channels, which are somewhat
288+
include creating additional VMBus channels, which are somewhat
289289
mis-named as "sub-channels" since they are functionally
290290
equivalent to the primary channel once they are created.
291291

0 commit comments

Comments
 (0)