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

[Xen-changelog] Possible fix for the SEDF scheduler assertion problem.



# HG changeset patch
# User jrb44@xxxxxxxxxxxxxxxxx
# Node ID 716a0d177ffa27f3d5c7caf8acfb7b4ff9fd6384
# Parent  85f92475b9437fcd10bf1ae105f53b0abe963050
Possible fix for the SEDF scheduler assertion problem.

Signed-off-by: Stephan Diestelhorst <Stephan.Diestelhorst@{cl.cam.ac.uk, 
inf.tu-dresden.de}>

diff -r 85f92475b943 -r 716a0d177ffa xen/common/sched_sedf.c
--- a/xen/common/sched_sedf.c   Mon Oct  3 18:14:02 2005
+++ b/xen/common/sched_sedf.c   Mon Oct  3 22:28:24 2005
@@ -500,9 +500,15 @@
                   curinf->vcpu->domain->domain_id,
                   curinf->vcpu->vcpu_id);
             __del_from_queue(curinf->vcpu);
-   
+
             /*move them to their next period*/
             curinf->deadl_abs += curinf->period;
+            /*ensure that the start of the next period is in the future*/
+            if (unlikely(PERIOD_BEGIN(curinf) < now)) {
+                curinf->deadl_abs += 
+                    (DIV_UP(now - PERIOD_BEGIN(curinf),
+                           curinf->period)) * curinf->period;
+            }
             /*and put them back into the queue*/
             __add_to_waitqueue_sort(curinf->vcpu);
             continue;
@@ -645,7 +651,7 @@
                                                         s_time_t end_xt, 
struct list_head *extraq[], int cpu) {
     struct task_slice   ret;
     struct sedf_vcpu_info *runinf;
- 
+    ASSERT(end_xt > now);
     /* Enough time left to use for extratime? */
     if (end_xt - now < EXTRA_QUANTUM)
         goto return_idle;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.