]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Revert "3.0.x: hrtimer: Update hrtimer base offsets each hrtimer_interrupt"
authorJoe Jin <joe.jin@oracle.com>
Fri, 6 Jul 2012 10:58:58 +0000 (18:58 +0800)
committerJoe Jin <joe.jin@oracle.com>
Fri, 6 Jul 2012 10:58:58 +0000 (18:58 +0800)
This reverts commit 1ecf58256194384908dc2ec31f4ca92c1bd73077.

To apply new patchset.

Signed-off-by: Joe Jin <joe.jin@oracle.com>
include/linux/hrtimer.h
kernel/hrtimer.c
kernel/time/timekeeping.c

index f6b2a74bfc9f14bcb7ae490490cd6380078a40fc..fd0dc30c9f154af94155b8c8c47e0a228fbd2573 100644 (file)
@@ -320,9 +320,6 @@ extern ktime_t ktime_get(void);
 extern ktime_t ktime_get_real(void);
 extern ktime_t ktime_get_boottime(void);
 extern ktime_t ktime_get_monotonic_offset(void);
-extern void ktime_get_and_real_and_sleep_offset(ktime_t *monotonic,
-                                               ktime_t *real_offset,
-                                               ktime_t *sleep_offset);
 
 DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
 
index df33909c198daf5bbed77830cac9488ee8aeff57..c5833ae994f6739aa281dfd2dd80db6bf311a359 100644 (file)
@@ -1257,26 +1257,18 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now)
 void hrtimer_interrupt(struct clock_event_device *dev)
 {
        struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
-       ktime_t expires_next, now, entry_time, delta, real_offset, sleep_offset;
+       ktime_t expires_next, now, entry_time, delta;
        int i, retries = 0;
 
        BUG_ON(!cpu_base->hres_active);
        cpu_base->nr_events++;
        dev->next_event.tv64 = KTIME_MAX;
 
-
-       ktime_get_and_real_and_sleep_offset(&now, &real_offset, &sleep_offset);
-
-       entry_time = now;
+       entry_time = now = ktime_get();
 retry:
        expires_next.tv64 = KTIME_MAX;
 
        raw_spin_lock(&cpu_base->lock);
-
-       /* Update base offsets, to avoid early wakeups */
-       cpu_base->clock_base[HRTIMER_BASE_REALTIME].offset = real_offset;
-       cpu_base->clock_base[HRTIMER_BASE_BOOTTIME].offset = sleep_offset;
-
        /*
         * We set expires_next to KTIME_MAX here with cpu_base->lock
         * held to prevent that a timer is enqueued in our queue via
@@ -1353,7 +1345,7 @@ retry:
         * interrupt routine. We give it 3 attempts to avoid
         * overreacting on some spurious event.
         */
-       ktime_get_and_real_and_sleep_offset(&now, &real_offset, &sleep_offset);
+       now = ktime_get();
        cpu_base->nr_retries++;
        if (++retries < 3)
                goto retry;
index 8933d4901df6ab518b9097f395e19ba2d0015a3d..0c433a0b331c60b582d14bf800d04b4031b30ba0 100644 (file)
@@ -1103,40 +1103,6 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim,
        } while (read_seqretry(&xtime_lock, seq));
 }
 
-/**
- * ktime_get_and_real_and_sleep_offset() - hrtimer helper, gets monotonic ktime,
- *     realtime offset, and sleep offsets.
- */
-void ktime_get_and_real_and_sleep_offset(ktime_t *monotonic,
-                                               ktime_t *real_offset,
-                                               ktime_t *sleep_offset)
-{
-       unsigned long seq;
-       struct timespec wtom, sleep;
-       u64 secs, nsecs;
-
-       do {
-               seq = read_seqbegin(&xtime_lock);
-
-               secs = xtime.tv_sec +
-                               wall_to_monotonic.tv_sec;
-               nsecs = xtime.tv_nsec +
-                               wall_to_monotonic.tv_nsec;
-               nsecs += timekeeping_get_ns();
-               /* If arch requires, add in gettimeoffset() */
-               nsecs += arch_gettimeoffset();
-
-               wtom = wall_to_monotonic;
-               sleep = total_sleep_time;
-       } while (read_seqretry(&xtime_lock, seq));
-
-       *monotonic = ktime_add_ns(ktime_set(secs, 0), nsecs);
-       set_normalized_timespec(&wtom, -wtom.tv_sec, -wtom.tv_nsec);
-       *real_offset =  timespec_to_ktime(wtom);
-       *sleep_offset = timespec_to_ktime(sleep);
-}
-
-
 /**
  * ktime_get_monotonic_offset() - get wall_to_monotonic in ktime_t format
  */