diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-07-08 10:03:03 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-07-08 10:03:03 +0100 |
commit | 7a4e2b1920d3d5480cf33d8139199158979d046a (patch) | |
tree | e1f316d7482fd14b78815e2198550f96802bbf92 | |
parent | 9d60094a16a24210b10e0580bfbf3a3ecc19ee4d (diff) | |
download | xen-7a4e2b1920d3d5480cf33d8139199158979d046a.tar.gz xen-7a4e2b1920d3d5480cf33d8139199158979d046a.tar.bz2 xen-7a4e2b1920d3d5480cf33d8139199158979d046a.zip |
xen: use s_time_t for periodic timer deadlines.
Otherwise vcpu_periodic_timer_work() can think the next timer is in
the future (and re-issue it unchanged) while timer_softirq_action()
thinks it's in the past (and fires it immediately), leading to
livelock.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
xen-unstable changeset: 21749:db35740574a5
xen-unstable date: Thu Jul 08 09:52:34 2010 +0100
-rw-r--r-- | xen/common/schedule.c | 2 | ||||
-rw-r--r-- | xen/include/xen/sched.h | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/xen/common/schedule.c b/xen/common/schedule.c index 2534957a8c..beeab25738 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -828,7 +828,7 @@ long sched_adjust(struct domain *d, struct xen_domctl_scheduler_op *op) static void vcpu_periodic_timer_work(struct vcpu *v) { s_time_t now = NOW(); - uint64_t periodic_next_event; + s_time_t periodic_next_event; ASSERT(!active_timer(&v->periodic_timer)); diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 00dfce50e4..5bda6c8f8f 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -83,8 +83,8 @@ struct vcpu struct vcpu *next_in_list; - uint64_t periodic_period; - uint64_t periodic_last_event; + s_time_t periodic_period; + s_time_t periodic_last_event; struct timer periodic_timer; struct timer singleshot_timer; |