1. 19 3月, 2009 2 次提交
  2. 18 3月, 2009 19 次提交
  3. 17 3月, 2009 4 次提交
    • L
      Fast TSC calibration: calculate proper frequency error bounds · 9e8912e0
      Linus Torvalds 提交于
      In order for ntpd to correctly synchronize the clocks, the frequency of
      the system clock must not be off by more than 500 ppm (or, put another
      way, 1:2000), or ntpd will end up giving up on trying to synchronize
      properly, and ends up reseting the clock in jumps instead.
      
      The fast TSC PIT calibration sometimes failed this test - it was
      assuming that the PIT reads always took about one microsecond each (2us
      for the two reads to get a 16-bit timer), and that calibrating TSC to
      the PIT over 15ms should thus be sufficient to get much closer than
      500ppm (max 2us error on both sides giving 4us over 15ms: a 270 ppm
      error value).
      
      However, that assumption does not always hold: apparently some hardware
      is either very much slower at reading the PIT registers, or there was
      other noise causing at least one machine to get 700+ ppm errors.
      
      So instead of using a fixed 15ms timing loop, this changes the fast PIT
      calibration to read the TSC delta over the individual PIT timer reads,
      and use the result to calculate the error bars on the PIT read timing
      properly.  We then successfully calibrate the TSC only if the maximum
      error bars fall below 500ppm.
      
      In the process, we also relax the timing to allow up to 25ms for the
      calibration, although it can happen much faster depending on hardware.
      Reported-and-tested-by: NJesper Krogh <jesper@krogh.cc>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9e8912e0
    • L
      Fix potential fast PIT TSC calibration startup glitch · a6a80e1d
      Linus Torvalds 提交于
      During bootup, when we reprogram the PIT (programmable interval timer)
      to start counting down from 0xffff in order to use it for the fast TSC
      calibration, we should also make sure to delay a bit afterwards to allow
      the PIT hardware to actually start counting with the new value.
      
      That will happens at the next CLK pulse (1.193182 MHz), so the easiest
      way to do that is to just wait at least one microsecond after
      programming the new PIT counter value.  We do that by just reading the
      counter value back once - which will take about 2us on PC hardware.
      Reported-and-tested-by: Njohn stultz <johnstul@us.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a6a80e1d
    • Y
      x86: MTRR workaround for system with stange var MTRRs · f0348c43
      Yinghai Lu 提交于
      Impact: don't trim e820 according to wrong mtrr
      
      Ozan reports that his server emits strange warning.
      it turns out the BIOS sets the MTRRs incorrectly.
      
      Ignore those strange ranges, and don't trim e820,
      just emit one warning about BIOS
      Reported-by: NOzan Çağlayan <ozan@pardus.org.tr>
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      LKML-Reference: <49BEE1E7.7020706@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f0348c43
    • J
      x86, paravirt: prevent gcc from generating the wrong addressing mode · 42854dc0
      Jeremy Fitzhardinge 提交于
      Impact: fix crash on VMI (VMware)
      
      When we generate a call sequence for calling a paravirtualized
      function, we presume that the generated code is "call *0xXXXXX",
      which is a 6 byte opcode; this is larger than a normal
      direct call, and so we can patch a direct call over it.
      
      At the moment, however we give gcc enough rope to hang us by
      putting the address in a register and generating a two byte
      indirect-via-register call.  Prevent this by explicitly
      dereferencing the function pointer and passing it into the
      asm as a constant.
      
      This prevents crashes in VMI, as it cannot handle unpatchable
      callsites.
      Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Cc: Alok Kataria <akataria@vmware.com>
      LKML-Reference: <49BEEDC2.2070809@goop.org>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      42854dc0
  4. 16 3月, 2009 3 次提交
  5. 15 3月, 2009 11 次提交
  6. 14 3月, 2009 1 次提交