Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b718f91c14604e4ab5cdfe8d3baff8111425ea7d
Commit:     b718f91c14604e4ab5cdfe8d3baff8111425ea7d
Parent:     40d485753423b87239cc16b6c8141ef8792324d9
Author:     Christoph Lameter <[EMAIL PROTECTED]>
AuthorDate: Wed Aug 1 13:49:45 2007 -0700
Committer:  Tony Luck <[EMAIL PROTECTED]>
CommitDate: Wed Aug 1 14:02:36 2007 -0700

    [IA64] ITC: Reduce rating for ITC clock if ITCs are drifty
    
    Make sure to reduce the rating of the ITC clock if ITCs are drifty. If they
    are drifting then we have not synchronized the ITC values, nor are we doing
    the jitter compensation (useless since drift may increase the differentials
    arbitrarily).
    
    Without this patch it is possible that the ITC clock becomes selected as
    the system clock on systems with drifty ITCs which will result in
    nanosleep hanging.
    
    One can still select the itc clock manually on such systems via
    
    clocksource=itc
    
    (Produces nice hangs on SGI Altix.)
    
    Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]>
    Signed-off-by: Tony Luck <[EMAIL PROTECTED]>
---
 arch/ia64/kernel/time.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 6c0e9e2..98cfc90 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -240,7 +240,21 @@ ia64_init_itm (void)
                if (!nojitter)
                        itc_jitter_data.itc_jitter = 1;
 #endif
-       }
+       } else
+               /*
+                * ITC is drifty and we have not synchronized the ITCs in 
smpboot.c.
+                * ITC values may fluctuate significantly between processors.
+                * Clock should not be used for hrtimers. Mark itc as only
+                * useful for boot and testing.
+                *
+                * Note that jitter compensation is off! There is no point of
+                * synchronizing ITCs since they may be large differentials
+                * that change over time.
+                *
+                * The only way to fix this would be to repeatedly sync the
+                * ITCs. Until that time we have to avoid ITC.
+                */
+               clocksource_itc.rating = 50;
 
        /* Setup the CPU local timer tick */
        ia64_cpu_local_tick();
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to