Re: [PATCH 12/17] Add helper function get_kernel_ns

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/14/2010 10:41 PM, Avi Kivity wrote:
On 06/15/2010 10:34 AM, Zachary Amsden wrote:
Add a helper function for the multiple places this is used. Note that it
must not be called in preemptible context, as that would mean the kernel
could enter software suspend state, which would cause non-atomic operation
of the monotonic_to_bootbased computation.

Open question: should the KVM_SET_CLOCK / KVM_GET_CLOCK ioctls use this
as well?  Currently, they are not bootbased (but perhaps should be).

Signed-off-by: Zachary Amsden<zamsden@xxxxxxxxxx>
---
  arch/x86/kvm/x86.c |   26 +++++++++++++-------------
  1 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 703ea43..15c7317 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -915,6 +915,16 @@ static void kvm_get_time_scale(uint32_t scaled_khz, uint32_t base_khz,
           __func__, base_khz, scaled_khz, shift, *pmultiplier);
  }

+static inline u64 get_kernel_ns(void)
+{
+    struct timespec ts;
+
+    WARN_ON(preemptible());
+    ktime_get_ts(&ts);
+    monotonic_to_bootbased(&ts);
+    return timespec_to_ns(&ts);
+}
+
  static DEFINE_PER_CPU(unsigned long, cpu_tsc_khz);


Isn't something like this a candidate for the time infrastructure?


Should it be?  It certainly seems reasonable.


Also, should we be using it for the cases KVM_GET_CLOCK / KVM_SET_CLOCK? It seems global kvmclock_offset for the VM ignores the bootbased conversion.

Zach
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux