From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932340AbYDYSBq (ORCPT ); Fri, 25 Apr 2008 14:01:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1762394AbYDYR5T (ORCPT ); Fri, 25 Apr 2008 13:57:19 -0400 Received: from saraswathi.solana.com ([198.99.130.12]:53132 "EHLO saraswathi.solana.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1763193AbYDYR5N (ORCPT ); Fri, 25 Apr 2008 13:57:13 -0400 Date: Fri, 25 Apr 2008 13:56:15 -0400 From: Jeff Dike To: Andrew Morton , LKML , uml-devel Cc: Ryan Finnie Subject: [PATCH 14/19] UML - Fix bad NTP interaction with clock Message-ID: <20080425175615.GA11198@c2.user-mode-linux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UML's supposed nanosecond clock interacts badly with NTP when NTP decides that the clock has drifted ahead and needs to be slowed down. Slowing down the clock is done by decrementing the cycle-to-nanosecond multiplier, which is 1. Decrementing that gives you 0 and time is stopped. This is fixed by switching to a microsecond clock, with a multiplier of 1000. Signed-off-by: Jeff Dike --- arch/um/kernel/time.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6-git/arch/um/kernel/time.c =================================================================== --- linux-2.6-git.orig/arch/um/kernel/time.c 2008-02-15 11:43:41.000000000 -0500 +++ linux-2.6-git/arch/um/kernel/time.c 2008-04-24 16:01:35.000000000 -0400 @@ -74,7 +74,7 @@ static irqreturn_t um_timer(int irq, voi static cycle_t itimer_read(void) { - return os_nsecs(); + return os_nsecs() / 1000; } static struct clocksource itimer_clocksource = { @@ -82,7 +82,7 @@ static struct clocksource itimer_clockso .rating = 300, .read = itimer_read, .mask = CLOCKSOURCE_MASK(64), - .mult = 1, + .mult = 1000, .shift = 0, .flags = CLOCK_SOURCE_IS_CONTINUOUS, };