Re: 2.6.25.2 - Jiffies/Time jumping back and forth (Regereesion from 2.6.24)

From: Martin Knoblauch
Date: Fri May 09 2008 - 09:01:48 EST


----- Original Message ----

> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> To: Martin Knoblauch <spamtrap@xxxxxxxxxxxx>
> Cc: Gabriel C <nix.or.die@xxxxxxxxxxxxxx>; Bart Van Assche <bart.vanassche@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; hmh@xxxxxxxxxx
> Sent: Thursday, May 8, 2008 4:13:55 PM
> Subject: Re: 2.6.25.2 - Jiffies/Time jumping back and forth (Regereesion from 2.6.24)
>
> On Thu, 8 May 2008, Martin Knoblauch wrote:
> > on two different systems running 2.6.25.2:
> >
> > ibm x3650(2xDualCore)
> > -------------------------------------
> > [root@lpsdm60 ~]# cat
> /sys/devices/system/clocksource/clocksource0/available_clocksource
> > tsc hpet acpi_pm jiffies
> > [root@lpsdm60 ~]# cat
> /sys/devices/system/clocksource/clocksource0/current_clocksource
> > tsc
> >
> > HP Proliant DL-380G4 (2xSingleCore)
> > ------------------------------------------------------------
> > [root@lpsdm52 ~]# cat
> /sys/devices/system/clocksource/clocksource0/available_clocksource
> > tsc hpet acpi_pm jiffies
> > [root@lpsdm52 ~]# cat
> /sys/devices/system/clocksource/clocksource0/current_clocksource
> > tsc
> >
> > and on the DL380G4 running 2.6.24:
> > ---------------------------------------------------------
> > [root@lpsdm52 ~]# cat
> /sys/devices/system/clocksource/clocksource0/available_clocksource
> > hpet acpi_pm jiffies tsc
> > [root@lpsdm52 ~]# cat
> /sys/devices/system/clocksource/clocksource0/current_clocksource
> > hpet
>
> So on 2.6.24 the TSC is declared unstable at some point and 2.6.25
> thinks it works fine. Is this the same kernel config (aside of the 24/25 fuzz) ?
>
> Thanks,
> tglx

hah. I love open source :-)

Between 2.6.24 and 2.6.25 there was some patching in "kernel/printk.c". Especially this is interesting:


@@ -680,7 +742,7 @@
loglev_char = default_message_loglevel
+ '0';
}
- t = printk_clock();
+ t = cpu_clock(printk_cpu);
nanosec_rem = do_div(t, 1000000000);
tlen = sprintf(tbuf,
"<%c>[%5lu.%06lu] ",


Where "prink_clock()" basically translates into "sched_clock()" in 2.6.24. If I change the 2.6.25 version to directly call "sched_clock()", the timestamps are back to the expected values and are no longer jumping back and forth. So, something in "cpu_clock()" is fishy.

Cheers
Martin

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/