07 Mar, 2007

1 commit

  • Prior to commit 95492e4646e5de8b43d9a7908d6177fb737b61f0 ([PATCH] x86:
    rewrite SMP TSC sync code), the headers in asm-i386 did not really require
    anything in include/asm-x86_64. This means that distributions such as
    fedora did not include asm-x86_64 in kernel-devel headers for i386. Ingo's
    commit changed that, and broke things. This is easy enough to hack around
    in package builds by just including asm-x86_64 on i386, but that's kind of
    annoying. If anything, x86_64 should depend upon i386, not the other way
    around.

    This patch changes it so that asm-x86_64/tsc.h includes asm-i386/tsc.h,
    rather than vice-versa.

    Signed-off-by: Andres Salomon
    Acked-by: Ingo Molnar
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     

05 Mar, 2007

1 commit

  • This patch resolves the issue found here:
    http://bugme.osdl.org/show_bug.cgi?id=7426

    The basic summary is:
    Currently we register most of i386/x86_64 clocksources at module_init
    time. Then we enable clocksource selection at late_initcall time. This
    causes some problems for drivers that use gettimeofday for init
    calibration routines (specifically the es1968 driver in this case),
    where durring module_init, the only clocksource available is the low-res
    jiffies clocksource. This may cause slight calibration errors, due to
    the small sampling time used.

    It should be noted that drivers that require fine grained time may not
    function on architectures that do not have better then jiffies
    resolution timekeeping (there are a few). However, this does not
    discount the reasonable need for such fine-grained timekeeping at init
    time.

    Thus the solution here is to register clocksources earlier (ideally when
    the hardware is being initialized), and then we enable clocksource
    selection at fs_initcall (before device_initcall).

    This patch should probably get some testing time in -mm, since
    clocksource selection is one of the most important issues for correct
    timekeeping, and I've only been able to test this on a few of my own
    boxes.

    Signed-off-by: John Stultz
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    john stultz
     

17 Feb, 2007

1 commit

  • make the TSC synchronization code more robust, and unify it between x86_64 and
    i386.

    The biggest change is the removal of the 'fix up TSCs' code on x86_64 and
    i386, in some rare cases it was /causing/ time-warps on SMP systems.

    The new code only checks for TSC asynchronity - and if it can prove a
    time-warp (if it can observe the TSC going backwards when going from one CPU
    to another within a critical section), then the TSC clock-source is turned
    off.

    The TSC synchronization-checking code also got moved into a separate file.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Cc: john stultz
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar