]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.arch/x86-vmware-tsc-05-skip-tsc-clocksource
Removed old xen patchset
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.arch / x86-vmware-tsc-05-skip-tsc-clocksource
diff --git a/src/patches/suse-2.6.27.25/patches.arch/x86-vmware-tsc-05-skip-tsc-clocksource b/src/patches/suse-2.6.27.25/patches.arch/x86-vmware-tsc-05-skip-tsc-clocksource
deleted file mode 100644 (file)
index 96eda07..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-From: Alok Kataria <akataria@vmware.com>
-Subject: x86: Skip verification by the watchdog for TSC clocksource.
-Patch-mainline:
-References: bnc#441338
-
-Impact: Changes timekeeping on Vmware (or with tsc=reliable).
-
-This is achieved by resetting the CLOCKSOURCE_MUST_VERIFY flag.
-
-We add a tsc=reliable commandline option to enable this.
-This enables legacy hardware without HPET, LAPIC, or ACPI timers
-to enter high-resolution timer mode.
-
-Along with that have extended this to be used in virtualization environement
-too. Now we also set this flag if the X86_FEATURE_TSC_RELIABLE bit is set.
-This is important since there is a wrap-around problem with the acpi_pm timer.
-The acpi_pm counter is just 24bits and this can overflow in ~4 seconds. With
-the NO_HZ kernels in virtualized environment, there can be situations when
-the guest is descheduled for longer duration, as a result we may miss the wrap
-of the acpi counter. When TSC is used as a clocksource and acpi_pm timer is
-being used as the watchdog clocksource this error in acpi_pm results in TSC
-being marked as unstable, and essentially results in time dropping in chunks
-of 4 seconds whenever this wrap is missed. Since the virtualized TSC is
-reliable on VMware, we should always use the TSCs clocksource on VMware, so
-we skip the verfication at runtime, by checking for the feature bit.
-
-Since we reset the flag for mgeode systems too, i have combined
-the mgeode case with the feature bit check.
-
-Signed-off-by: Jeff Hansen <jhansen@cardaccess-inc.com>
-Signed-off-by: Alok N Kataria <akataria@vmware.com>
-Signed-off-by: Dan Hecht <dhecht@vmware.com>
-Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-
----
-
- Documentation/kernel-parameters.txt |    7 +++++++
- arch/x86/kernel/tsc.c               |   33 +++++++++++++++++++++------------
- 2 files changed, 28 insertions(+), 12 deletions(-)
-
-
---- a/arch/x86/kernel/tsc.c
-+++ b/arch/x86/kernel/tsc.c
-@@ -32,6 +32,7 @@ static int tsc_unstable;
-    erroneous rdtsc usage on !cpu_has_tsc processors */
- static int tsc_disabled = -1;
-+static int tsc_clocksource_reliable;
- /*
-  * Scheduler clock - returns current time in nanosec units.
-  */
-@@ -99,6 +100,15 @@ int __init notsc_setup(char *str)
- __setup("notsc", notsc_setup);
-+static int __init tsc_setup(char *str)
-+{
-+      if (!strcmp(str, "reliable"))
-+              tsc_clocksource_reliable = 1;
-+      return 1;
-+}
-+
-+__setup("tsc=", tsc_setup);
-+
- #define MAX_RETRIES     5
- #define SMI_TRESHOLD    50000
-@@ -564,24 +574,21 @@ static struct dmi_system_id __initdata b
-       {}
- };
--/*
-- * Geode_LX - the OLPC CPU has a possibly a very reliable TSC
-- */
-+static void __init check_system_tsc_reliable(void)
-+{
- #ifdef CONFIG_MGEODE_LX
--/* RTSC counts during suspend */
-+      /* RTSC counts during suspend */
- #define RTSC_SUSP 0x100
--
--static void __init check_geode_tsc_reliable(void)
--{
-       unsigned long res_low, res_high;
-       rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high);
-+      /* Geode_LX - the OLPC CPU has a possibly a very reliable TSC */
-       if (res_low & RTSC_SUSP)
--              clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;
--}
--#else
--static inline void check_geode_tsc_reliable(void) { }
-+              tsc_clocksource_reliable = 1;
- #endif
-+      if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE))
-+              tsc_clocksource_reliable = 1;
-+}
- /*
-  * Make an educated guess if the TSC is trustworthy and synchronized
-@@ -616,6 +623,8 @@ static void __init init_tsc_clocksource(
- {
-       clocksource_tsc.mult = clocksource_khz2mult(tsc_khz,
-                       clocksource_tsc.shift);
-+      if (tsc_clocksource_reliable)
-+              clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;
-       /* lower the rating if we already know its unstable: */
-       if (check_tsc_unstable()) {
-               clocksource_tsc.rating = 0;
-@@ -676,7 +685,7 @@ void __init tsc_init(void)
-       if (unsynchronized_tsc())
-               mark_tsc_unstable("TSCs unsynchronized");
--      check_geode_tsc_reliable();
-+      check_system_tsc_reliable();
-       init_tsc_clocksource();
- }
---- a/Documentation/kernel-parameters.txt
-+++ b/Documentation/kernel-parameters.txt
-@@ -2200,6 +2200,13 @@ and is between 256 and 4096 characters. 
-                       Format:
-                       <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
-+      tsc=            Disable clocksource-must-verify flag for TSC.
-+                      Format: <string>
-+                      [x86] reliable: mark tsc clocksource as reliable, this
-+                      disables clocksource verification at runtime.
-+                      Used to enable high-resolution timer mode on older
-+                      hardware, and in virtualized environment.
-+
-       turbografx.map[2|3]=    [HW,JOY]
-                       TurboGraFX parallel port interface
-                       Format: