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

[Xen-changelog] Fix e1000 hang during reboot bug. Kudos to Steven Hand for analyzing.



ChangeSet 1.1885, 2005/05/21 13:40:10+01:00, cl349@xxxxxxxxxxxxxxxxxxxx

        Fix e1000 hang during reboot bug.  Kudos to Steven Hand for analyzing.
        time.c:
          Fix bug in code which sets our one-shot timer when we decide to block 
during
          the idle loop.
        Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>



 time.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)


diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c       2005-05-22 
13:06:05 -04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c       2005-05-22 
13:06:05 -04:00
@@ -656,7 +656,12 @@
 /* Convert jiffies to system time. Call with xtime_lock held for reading. */
 static inline u64 __jiffies_to_st(unsigned long j) 
 {
-       return processed_system_time + ((j - jiffies) * NS_PER_TICK);
+       long delta = j - jiffies;
+       /* NB. The next check can trigger in some wrap-around cases, but
+        * that's ok -- we'll just end up with a shorter timeout. */
+       if (delta < 1)
+               delta = 1;
+       return processed_system_time + (delta * NS_PER_TICK);
 }
 
 /*
@@ -683,8 +688,6 @@
         * updates of jiffies since interrupts are off.
         */
        j = next_timer_interrupt();
-       if (j < (jiffies + 1))
-               j = jiffies + 1;
        alarm = __jiffies_to_st(j);
 
        /* Failure is pretty bad, but we'd best soldier on. */

_______________________________________________
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®.