diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 13:53:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 13:53:02 -0400 |
commit | 1f6d6e8ebe73ba9d9d4c693f7f6f50f661dbd6e4 (patch) | |
tree | be7a2d20b1728da5a0d844a6f4cd382b2c2569fb /arch | |
parent | db563fc2e80534f98c7f9121a6f7dfe41f177a79 (diff) | |
parent | 268a3dcfea2077fca60d3715caa5c96f9b5e6ea7 (diff) |
Merge branch 'v28-range-hrtimers-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'v28-range-hrtimers-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (37 commits)
hrtimers: add missing docbook comments to struct hrtimer
hrtimers: simplify hrtimer_peek_ahead_timers()
hrtimers: fix docbook comments
DECLARE_PER_CPU needs linux/percpu.h
hrtimers: fix typo
rangetimers: fix the bug reported by Ingo for real
rangetimer: fix BUG_ON reported by Ingo
rangetimer: fix x86 build failure for the !HRTIMERS case
select: fix alpha OSF wrapper
select: fix alpha OSF wrapper
hrtimer: peek at the timer queue just before going idle
hrtimer: make the futex() system call use the per process slack value
hrtimer: make the nanosleep() syscall use the per process slack
hrtimer: fix signed/unsigned bug in slack estimator
hrtimer: show the timer ranges in /proc/timer_list
hrtimer: incorporate feedback from Peter Zijlstra
hrtimer: add a hrtimer_start_range() function
hrtimer: another build fix
hrtimer: fix build bug found by Ingo
hrtimer: make select() and poll() use the hrtimer range feature
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/kernel/osf_sys.c | 13 | ||||
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 2 | ||||
-rw-r--r-- | arch/powerpc/oprofile/cell/spu_profiler.c | 2 | ||||
-rw-r--r-- | arch/x86/kvm/i8254.c | 8 | ||||
-rw-r--r-- | arch/x86/kvm/lapic.c | 6 |
5 files changed, 15 insertions, 16 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index f25f6c490952..18a3ea1aac51 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -983,10 +983,12 @@ asmlinkage int | |||
983 | osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, | 983 | osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, |
984 | struct timeval32 __user *tvp) | 984 | struct timeval32 __user *tvp) |
985 | { | 985 | { |
986 | s64 timeout = MAX_SCHEDULE_TIMEOUT; | 986 | struct timespec end_time, *to = NULL; |
987 | if (tvp) { | 987 | if (tvp) { |
988 | time_t sec, usec; | 988 | time_t sec, usec; |
989 | 989 | ||
990 | to = &end_time; | ||
991 | |||
990 | if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp)) | 992 | if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp)) |
991 | || __get_user(sec, &tvp->tv_sec) | 993 | || __get_user(sec, &tvp->tv_sec) |
992 | || __get_user(usec, &tvp->tv_usec)) { | 994 | || __get_user(usec, &tvp->tv_usec)) { |
@@ -996,14 +998,13 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, | |||
996 | if (sec < 0 || usec < 0) | 998 | if (sec < 0 || usec < 0) |
997 | return -EINVAL; | 999 | return -EINVAL; |
998 | 1000 | ||
999 | if ((unsigned long) sec < MAX_SELECT_SECONDS) { | 1001 | if (poll_select_set_timeout(to, sec, usec * NSEC_PER_USEC)) |
1000 | timeout = (usec + 1000000/HZ - 1) / (1000000/HZ); | 1002 | return -EINVAL; |
1001 | timeout += sec * (unsigned long) HZ; | 1003 | |
1002 | } | ||
1003 | } | 1004 | } |
1004 | 1005 | ||
1005 | /* OSF does not copy back the remaining time. */ | 1006 | /* OSF does not copy back the remaining time. */ |
1006 | return core_sys_select(n, inp, outp, exp, &timeout); | 1007 | return core_sys_select(n, inp, outp, exp, to); |
1007 | } | 1008 | } |
1008 | 1009 | ||
1009 | struct rusage32 { | 1010 | struct rusage32 { |
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index c0699f0e35a9..a312c9e9b9ef 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -1114,7 +1114,7 @@ static void kvm_migrate_hlt_timer(struct kvm_vcpu *vcpu) | |||
1114 | struct hrtimer *p_ht = &vcpu->arch.hlt_timer; | 1114 | struct hrtimer *p_ht = &vcpu->arch.hlt_timer; |
1115 | 1115 | ||
1116 | if (hrtimer_cancel(p_ht)) | 1116 | if (hrtimer_cancel(p_ht)) |
1117 | hrtimer_start(p_ht, p_ht->expires, HRTIMER_MODE_ABS); | 1117 | hrtimer_start_expires(p_ht, HRTIMER_MODE_ABS); |
1118 | } | 1118 | } |
1119 | 1119 | ||
1120 | static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data) | 1120 | static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data) |
diff --git a/arch/powerpc/oprofile/cell/spu_profiler.c b/arch/powerpc/oprofile/cell/spu_profiler.c index 6edaebd5099a..dd499c3e9da7 100644 --- a/arch/powerpc/oprofile/cell/spu_profiler.c +++ b/arch/powerpc/oprofile/cell/spu_profiler.c | |||
@@ -195,7 +195,7 @@ int start_spu_profiling(unsigned int cycles_reset) | |||
195 | pr_debug("timer resolution: %lu\n", TICK_NSEC); | 195 | pr_debug("timer resolution: %lu\n", TICK_NSEC); |
196 | kt = ktime_set(0, profiling_interval); | 196 | kt = ktime_set(0, profiling_interval); |
197 | hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); | 197 | hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); |
198 | timer.expires = kt; | 198 | hrtimer_set_expires(&timer, kt); |
199 | timer.function = profile_spus; | 199 | timer.function = profile_spus; |
200 | 200 | ||
201 | /* Allocate arrays for collecting SPU PC samples */ | 201 | /* Allocate arrays for collecting SPU PC samples */ |
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index 634132a9a512..11c6725fb798 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c | |||
@@ -204,10 +204,10 @@ static int __pit_timer_fn(struct kvm_kpit_state *ps) | |||
204 | if (vcpu0 && waitqueue_active(&vcpu0->wq)) | 204 | if (vcpu0 && waitqueue_active(&vcpu0->wq)) |
205 | wake_up_interruptible(&vcpu0->wq); | 205 | wake_up_interruptible(&vcpu0->wq); |
206 | 206 | ||
207 | pt->timer.expires = ktime_add_ns(pt->timer.expires, pt->period); | 207 | hrtimer_add_expires_ns(&pt->timer, pt->period); |
208 | pt->scheduled = ktime_to_ns(pt->timer.expires); | 208 | pt->scheduled = hrtimer_get_expires_ns(&pt->timer); |
209 | if (pt->period) | 209 | if (pt->period) |
210 | ps->channels[0].count_load_time = pt->timer.expires; | 210 | ps->channels[0].count_load_time = hrtimer_get_expires(&pt->timer); |
211 | 211 | ||
212 | return (pt->period == 0 ? 0 : 1); | 212 | return (pt->period == 0 ? 0 : 1); |
213 | } | 213 | } |
@@ -257,7 +257,7 @@ void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu) | |||
257 | 257 | ||
258 | timer = &pit->pit_state.pit_timer.timer; | 258 | timer = &pit->pit_state.pit_timer.timer; |
259 | if (hrtimer_cancel(timer)) | 259 | if (hrtimer_cancel(timer)) |
260 | hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS); | 260 | hrtimer_start_expires(timer, HRTIMER_MODE_ABS); |
261 | } | 261 | } |
262 | 262 | ||
263 | static void destroy_pit_timer(struct kvm_kpit_timer *pt) | 263 | static void destroy_pit_timer(struct kvm_kpit_timer *pt) |
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 6571926bfd33..0fc3cab48943 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -946,9 +946,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic) | |||
946 | 946 | ||
947 | if (apic_lvtt_period(apic)) { | 947 | if (apic_lvtt_period(apic)) { |
948 | result = 1; | 948 | result = 1; |
949 | apic->timer.dev.expires = ktime_add_ns( | 949 | hrtimer_add_expires_ns(&apic->timer.dev, apic->timer.period); |
950 | apic->timer.dev.expires, | ||
951 | apic->timer.period); | ||
952 | } | 950 | } |
953 | return result; | 951 | return result; |
954 | } | 952 | } |
@@ -1117,7 +1115,7 @@ void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu) | |||
1117 | 1115 | ||
1118 | timer = &apic->timer.dev; | 1116 | timer = &apic->timer.dev; |
1119 | if (hrtimer_cancel(timer)) | 1117 | if (hrtimer_cancel(timer)) |
1120 | hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS); | 1118 | hrtimer_start_expires(timer, HRTIMER_MODE_ABS); |
1121 | } | 1119 | } |
1122 | 1120 | ||
1123 | void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) | 1121 | void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) |