]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
hrtimer: Revert CLOCK_MONOTONIC_RAW support
authorThomas Gleixner <tglx@linutronix.de>
Thu, 3 Mar 2016 10:11:12 +0000 (11:11 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 3 Mar 2016 10:11:12 +0000 (11:11 +0100)
Revert commits:
a6e707ddbdf1: KVM: arm/arm64: timer: Switch to CLOCK_MONOTONIC_RAW
9006a01829a5: hrtimer: Catch illegal clockids
9c808765e88e: hrtimer: Add support for CLOCK_MONOTONIC_RAW

Marc found out, that there are fundamental issues with that patch series
because __hrtimer_get_next_event() and hrtimer_forward() need support for
CLOCK_MONOTONIC_RAW. Nothing which is easily fixed, so revert the whole lot.

Reported-by: Marc Zyngier <marc.zyngier@arm.com>
Link: http://lkml.kernel.org/r/56D6CEF0.8060607@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/hrtimer.h
kernel/time/hrtimer.c
virt/kvm/arm/arch_timer.c

index a6d64af5e73fb25f0652f40609caa5f59a231f78..76dd4f0da5ca9907572bea19f4b0d0dbe8ad06eb 100644 (file)
@@ -151,7 +151,6 @@ enum  hrtimer_base_type {
        HRTIMER_BASE_REALTIME,
        HRTIMER_BASE_BOOTTIME,
        HRTIMER_BASE_TAI,
-       HRTIMER_BASE_MONOTONIC_RAW,
        HRTIMER_MAX_CLOCK_BASES,
 };
 
index cb0fe70f3c510ffef51c1a3fd320c5da3a1116ea..435b8850dd80a300c11ad128bc0cf51e3c23e15a 100644 (file)
@@ -90,30 +90,19 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
                        .clockid = CLOCK_TAI,
                        .get_time = &ktime_get_clocktai,
                },
-               {
-                       .index = HRTIMER_BASE_MONOTONIC_RAW,
-                       .clockid = CLOCK_MONOTONIC_RAW,
-                       .get_time = &ktime_get_raw,
-               },
        }
 };
 
 static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
-       /* Make sure we catch unsupported clockids */
-       [0 ... MAX_CLOCKS - 1]  = HRTIMER_MAX_CLOCK_BASES,
-
        [CLOCK_REALTIME]        = HRTIMER_BASE_REALTIME,
        [CLOCK_MONOTONIC]       = HRTIMER_BASE_MONOTONIC,
-       [CLOCK_MONOTONIC_RAW]   = HRTIMER_BASE_MONOTONIC_RAW,
        [CLOCK_BOOTTIME]        = HRTIMER_BASE_BOOTTIME,
        [CLOCK_TAI]             = HRTIMER_BASE_TAI,
 };
 
 static inline int hrtimer_clockid_to_base(clockid_t clock_id)
 {
-       int base = hrtimer_clock_to_base_table[clock_id];
-       BUG_ON(base == HRTIMER_MAX_CLOCK_BASES);
-       return base;
+       return hrtimer_clock_to_base_table[clock_id];
 }
 
 /*
@@ -1279,10 +1268,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now)
                if (!(active & 0x01))
                        continue;
 
-               if (unlikely(base->index == HRTIMER_BASE_MONOTONIC_RAW))
-                       basenow = ktime_get_raw();
-               else
-                       basenow = ktime_add(now, base->offset);
+               basenow = ktime_add(now, base->offset);
 
                while ((node = timerqueue_getnext(&base->active))) {
                        struct hrtimer *timer;
index 97c58153f923ede13f6392b12105609aa151d948..69bca185c471d1dec971f02403ae9fd60851f5bd 100644 (file)
@@ -48,7 +48,7 @@ static bool timer_is_armed(struct arch_timer_cpu *timer)
 static void timer_arm(struct arch_timer_cpu *timer, u64 ns)
 {
        timer->armed = true;
-       hrtimer_start(&timer->timer, ktime_add_ns(ktime_get_raw(), ns),
+       hrtimer_start(&timer->timer, ktime_add_ns(ktime_get(), ns),
                      HRTIMER_MODE_ABS);
 }
 
@@ -308,7 +308,7 @@ void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu)
        struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu;
 
        INIT_WORK(&timer->expired, kvm_timer_inject_irq_work);
-       hrtimer_init(&timer->timer, CLOCK_MONOTONIC_RAW, HRTIMER_MODE_ABS);
+       hrtimer_init(&timer->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
        timer->timer.function = kvm_timer_expire;
 }