From: Glauber Costa <glommer@redhat.com>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Rik van Riel <riel@redhat.com>,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
Peter Zijlstra <peterz@infradead.org>,
Avi Kivity <avi@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Eric B Munson <emunson@mgebm.net>
Subject: [PATCH 2/7] KVM-HDR: KVM Steal time implementation
Date: Mon, 13 Jun 2011 19:31:32 -0400 [thread overview]
Message-ID: <1308007897-17013-3-git-send-email-glommer@redhat.com> (raw)
In-Reply-To: <1308007897-17013-1-git-send-email-glommer@redhat.com>
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>
CC: Rik van Riel <riel@redhat.com>
CC: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
CC: Peter Zijlstra <peterz@infradead.org>
CC: Avi Kivity <avi@redhat.com>
CC: Anthony Liguori <aliguori@us.ibm.com>
CC: Eric B Munson <emunson@mgebm.net>
---
Documentation/virtual/kvm/msr.txt | 33 +++++++++++++++++++++++++++++++++
arch/x86/include/asm/kvm_para.h | 9 +++++++++
2 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt
index d079aed..79c12a7 100644
--- a/Documentation/virtual/kvm/msr.txt
+++ b/Documentation/virtual/kvm/msr.txt
@@ -185,3 +185,36 @@ MSR_KVM_ASYNC_PF_EN: 0x4b564d02
Currently type 2 APF will be always delivered on the same vcpu as
type 1 was, but guest should not rely on that.
+
+MSR_KVM_STEAL_TIME: 0x4b564d03
+
+ data: 64-byte alignment physical address of a memory area which must be
+ in guest RAM, plus an enable bit in bit 0. This memory is expected to
+ hold a copy of the following structure:
+
+ struct kvm_steal_time {
+ __u64 steal;
+ __u32 version;
+ __u32 flags;
+ __u32 pad[6];
+ }
+
+ whose data will be filled in by the hypervisor periodically. Only one
+ write, or registration, is needed for each VCPU. The interval between
+ updates of this structure is arbitrary and implementation-dependent.
+ The hypervisor may update this structure at any time it sees fit until
+ anything with bit0 == 0 is written to it. Guest is required to make sure
+ this structure is initialized to zero.
+
+ Fields have the following meanings:
+
+ version: guest has to check version before and after grabbing
+ time information and check that they are both equal and even.
+ An odd version indicates an in-progress update.
+
+ flags: At this point, always zero. May be used to indicate
+ changes in this structure in the future.
+
+ steal: the amount of time in which this vCPU did not run, in
+ nanoseconds.
+
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
index d6cd79b..ac306c4 100644
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -21,6 +21,7 @@
*/
#define KVM_FEATURE_CLOCKSOURCE2 3
#define KVM_FEATURE_ASYNC_PF 4
+#define KVM_FEATURE_STEAL_TIME 5
/* The last 8 bits are used to indicate how to interpret the flags field
* in pvclock structure. If no bits are set, all flags are ignored.
@@ -35,6 +36,14 @@
#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
#define MSR_KVM_ASYNC_PF_EN 0x4b564d02
+#define MSR_KVM_STEAL_TIME 0x4b564d03
+
+struct kvm_steal_time {
+ __u64 steal;
+ __u32 version;
+ __u32 flags;
+ __u32 pad[6];
+};
#define KVM_MAX_MMU_OP_BATCH 32
--
1.7.3.4
next prev parent reply other threads:[~2011-06-13 23:39 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-13 23:31 [PATCH 0/7] KVM steal " Glauber Costa
2011-06-13 23:31 ` [PATCH 1/7] KVM-HDR Add constant to represent KVM MSRs enabled bit Glauber Costa
2011-06-14 0:59 ` Rik van Riel
2011-06-14 1:18 ` Eric B Munson
2011-06-13 23:31 ` Glauber Costa [this message]
2011-06-14 1:19 ` [PATCH 2/7] KVM-HDR: KVM Steal time implementation Eric B Munson
2011-06-14 1:33 ` Rik van Riel
2011-06-13 23:31 ` [PATCH 3/7] KVM-HV: " Glauber Costa
2011-06-14 1:20 ` Eric B Munson
2011-06-14 7:45 ` Gleb Natapov
2011-06-15 1:01 ` Glauber Costa
2011-06-15 3:09 ` Glauber Costa
2011-06-15 9:09 ` Gleb Natapov
2011-06-16 3:31 ` Glauber Costa
2011-06-16 11:27 ` Gleb Natapov
2011-06-16 12:11 ` Glauber Costa
2011-06-16 12:21 ` Gleb Natapov
2011-06-16 12:24 ` Glauber Costa
2011-06-19 12:35 ` Avi Kivity
2011-06-19 12:59 ` Gleb Natapov
2011-06-19 13:02 ` Avi Kivity
2011-06-20 7:21 ` Gleb Natapov
2011-06-20 8:02 ` Avi Kivity
2011-06-20 12:42 ` Glauber Costa
2011-06-20 13:38 ` Gleb Natapov
2011-06-14 12:20 ` Rik van Riel
2011-06-13 23:31 ` [PATCH 4/7] KVM-GST: Add a pv_ops stub for steal time Glauber Costa
2011-06-14 1:20 ` Eric B Munson
2011-06-14 13:23 ` Rik van Riel
2011-06-13 23:31 ` [PATCH 5/7] KVM-GST: KVM Steal time accounting Glauber Costa
2011-06-14 1:21 ` Eric B Munson
2011-06-14 10:10 ` Peter Zijlstra
2011-06-15 1:08 ` Glauber Costa
2011-06-15 9:28 ` Peter Zijlstra
2011-06-13 23:31 ` [PATCH 6/7] KVM-GST: adjust scheduler cpu power Glauber Costa
2011-06-14 1:21 ` Eric B Munson
2011-06-14 2:47 ` Asias He
2011-06-14 10:42 ` Peter Zijlstra
2011-06-15 1:26 ` Glauber Costa
2011-06-20 14:41 ` Peter Zijlstra
2011-06-13 23:31 ` [PATCH 7/7] KVM-GST: KVM Steal time registration Glauber Costa
2011-06-14 1:21 ` Eric B Munson
2011-06-14 8:06 ` Gleb Natapov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1308007897-17013-3-git-send-email-glommer@redhat.com \
--to=glommer@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=emunson@mgebm.net \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®