aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2012-06-24 12:24:49 -0400
committerAvi Kivity <avi@redhat.com>2012-06-25 05:40:34 -0400
commitc1af87dc96cd0f8f17694d0cd9be01b80b2c7a6a (patch)
treedf243a9a8ac7c5d4e825a37f8afb1bdc9eb09924 /Documentation
parentd0a69d6321ca759bb8d47803d06ba8571ab42d07 (diff)
KVM: eoi msi documentation
Document the new EOI MSR. Couldn't decide whether this change belongs conceptually on guest or host side, so a separate patch. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/virtual/kvm/msr.txt33
1 files changed, 33 insertions, 0 deletions
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt
index 96b41bd9752..73047104858 100644
--- a/Documentation/virtual/kvm/msr.txt
+++ b/Documentation/virtual/kvm/msr.txt
@@ -223,3 +223,36 @@ MSR_KVM_STEAL_TIME: 0x4b564d03
223 steal: the amount of time in which this vCPU did not run, in 223 steal: the amount of time in which this vCPU did not run, in
224 nanoseconds. Time during which the vcpu is idle, will not be 224 nanoseconds. Time during which the vcpu is idle, will not be
225 reported as steal time. 225 reported as steal time.
226
227MSR_KVM_EOI_EN: 0x4b564d04
228 data: Bit 0 is 1 when PV end of interrupt is enabled on the vcpu; 0
229 when disabled. Bit 1 is reserved and must be zero. When PV end of
230 interrupt is enabled (bit 0 set), bits 63-2 hold a 4-byte aligned
231 physical address of a 4 byte memory area which must be in guest RAM and
232 must be zeroed.
233
234 The first, least significant bit of 4 byte memory location will be
235 written to by the hypervisor, typically at the time of interrupt
236 injection. Value of 1 means that guest can skip writing EOI to the apic
237 (using MSR or MMIO write); instead, it is sufficient to signal
238 EOI by clearing the bit in guest memory - this location will
239 later be polled by the hypervisor.
240 Value of 0 means that the EOI write is required.
241
242 It is always safe for the guest to ignore the optimization and perform
243 the APIC EOI write anyway.
244
245 Hypervisor is guaranteed to only modify this least
246 significant bit while in the current VCPU context, this means that
247 guest does not need to use either lock prefix or memory ordering
248 primitives to synchronise with the hypervisor.
249
250 However, hypervisor can set and clear this memory bit at any time:
251 therefore to make sure hypervisor does not interrupt the
252 guest and clear the least significant bit in the memory area
253 in the window between guest testing it to detect
254 whether it can skip EOI apic write and between guest
255 clearing it to signal EOI to the hypervisor,
256 guest must both read the least significant bit in the memory area and
257 clear it using a single CPU instruction, such as test and clear, or
258 compare and exchange.