ia64/xen-unstable

diff patches/linux-2.6.16.29/fix-hz-suspend.patch @ 11540:041be3f6b38e

[linux patches] Update patches for linux-2.6.16.29.

Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>
author Christian Limpach <Christian.Limpach@xensource.com>
date Tue Sep 19 14:26:47 2006 +0100 (2006-09-19)
parents patches/linux-2.6.16.13/fix-hz-suspend.patch@18f8dde91fbd
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/linux-2.6.16.29/fix-hz-suspend.patch	Tue Sep 19 14:26:47 2006 +0100
     1.3 @@ -0,0 +1,26 @@
     1.4 +diff -pruN ../orig-linux-2.6.16.29/kernel/timer.c ./kernel/timer.c
     1.5 +--- ../orig-linux-2.6.16.29/kernel/timer.c	2006-09-12 19:02:10.000000000 +0100
     1.6 ++++ ./kernel/timer.c	2006-09-19 13:58:58.000000000 +0100
     1.7 +@@ -555,6 +555,22 @@ found:
     1.8 + 	}
     1.9 + 	spin_unlock(&base->t_base.lock);
    1.10 + 
    1.11 ++	/*
    1.12 ++	 * It can happen that other CPUs service timer IRQs and increment
    1.13 ++	 * jiffies, but we have not yet got a local timer tick to process
    1.14 ++	 * the timer wheels.  In that case, the expiry time can be before
    1.15 ++	 * jiffies, but since the high-resolution timer here is relative to
    1.16 ++	 * jiffies, the default expression when high-resolution timers are
    1.17 ++	 * not active,
    1.18 ++	 *
    1.19 ++	 *   time_before(MAX_JIFFY_OFFSET + jiffies, expires)
    1.20 ++	 *
    1.21 ++	 * would falsely evaluate to true.  If that is the case, just
    1.22 ++	 * return jiffies so that we can immediately fire the local timer
    1.23 ++	 */
    1.24 ++	if (time_before(expires, jiffies))
    1.25 ++		return jiffies;
    1.26 ++
    1.27 + 	if (time_before(hr_expires, expires))
    1.28 + 		return hr_expires;
    1.29 +