diff options
author | Glauber Costa <glommer@redhat.com> | 2011-07-11 15:28:13 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-07-12 06:17:03 -0400 |
commit | 9ddabbe72e41ca6794cb4947c70929c9410e6752 (patch) | |
tree | c1b4b5dc3f326fcac560211283a65bb626277e7c /Documentation/virtual | |
parent | 4b6b35f55ca81d3bfdec63b0adb61798702ceb2e (diff) |
KVM: KVM Steal time guest/host interface
To implement steal time, we need the hypervisor to pass the guest information
about how much time was spent running other processes outside the VM.
This is per-vcpu, and using the kvmclock structure for that is an abuse
we decided not to make.
In this patchset, I am introducing a new msr, KVM_MSR_STEAL_TIME, that
holds the memory area address containing information about steal time
This patch contains the headers for it. I am keeping it separate to facilitate
backports to people who wants to backport the kernel part but not the
hypervisor, or the other way around.
Signed-off-by: Glauber Costa <glommer@redhat.com>
Acked-by: Rik van Riel <riel@redhat.com>
Tested-by: Eric B Munson <emunson@mgebm.net>
CC: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
CC: Peter Zijlstra <peterz@infradead.org>
CC: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'Documentation/virtual')
-rw-r--r-- | Documentation/virtual/kvm/msr.txt | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt index d079aed27e03..50317809113d 100644 --- a/Documentation/virtual/kvm/msr.txt +++ b/Documentation/virtual/kvm/msr.txt | |||
@@ -185,3 +185,37 @@ MSR_KVM_ASYNC_PF_EN: 0x4b564d02 | |||
185 | 185 | ||
186 | Currently type 2 APF will be always delivered on the same vcpu as | 186 | Currently type 2 APF will be always delivered on the same vcpu as |
187 | type 1 was, but guest should not rely on that. | 187 | type 1 was, but guest should not rely on that. |
188 | |||
189 | MSR_KVM_STEAL_TIME: 0x4b564d03 | ||
190 | |||
191 | data: 64-byte alignment physical address of a memory area which must be | ||
192 | in guest RAM, plus an enable bit in bit 0. This memory is expected to | ||
193 | hold a copy of the following structure: | ||
194 | |||
195 | struct kvm_steal_time { | ||
196 | __u64 steal; | ||
197 | __u32 version; | ||
198 | __u32 flags; | ||
199 | __u32 pad[12]; | ||
200 | } | ||
201 | |||
202 | whose data will be filled in by the hypervisor periodically. Only one | ||
203 | write, or registration, is needed for each VCPU. The interval between | ||
204 | updates of this structure is arbitrary and implementation-dependent. | ||
205 | The hypervisor may update this structure at any time it sees fit until | ||
206 | anything with bit0 == 0 is written to it. Guest is required to make sure | ||
207 | this structure is initialized to zero. | ||
208 | |||
209 | Fields have the following meanings: | ||
210 | |||
211 | version: a sequence counter. In other words, guest has to check | ||
212 | this field before and after grabbing time information and make | ||
213 | sure they are both equal and even. An odd version indicates an | ||
214 | in-progress update. | ||
215 | |||
216 | flags: At this point, always zero. May be used to indicate | ||
217 | changes in this structure in the future. | ||
218 | |||
219 | steal: the amount of time in which this vCPU did not run, in | ||
220 | nanoseconds. Time during which the vcpu is idle, will not be | ||
221 | reported as steal time. | ||