Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e6c4dc6c36b01d33a2e0c8a89828d8dd44fb4c1b
Commit:     e6c4dc6c36b01d33a2e0c8a89828d8dd44fb4c1b
Parent:     45078cb5e2fb5a0e55c373755ed45b43d901f9e4
Author:     Willy Tarreau <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 13:33:33 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 13:33:33 2008 +0100

    x86: GEODE add the "mfgptfix" boot time option to fix MFGPT timers
    
    The new "mfgptfix" boot command line option may be usd to fix MFGPT
    timers on AMD Geode platforms when the BIOS has incorrectly applied
    a workaround. TinyBIOS version 0.98 is known to be affected, 0.99
    fixes the problem by letting the user disable the workaround.
    
    Signed-off-by: Willy Tarreau <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |    5 +++++
 arch/x86/kernel/mfgpt_32.c          |   15 +++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index fe3031d..5d171b7 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1092,6 +1092,11 @@ and is between 256 and 4096 characters. It is defined in 
the file
                        Multi-Function General Purpose Timers on AMD Geode
                        platforms.
 
+       mfgptfix        [X86-32] Fix MFGPT timers on AMD Geode platforms when
+                       the BIOS has incorrectly applied a workaround. TinyBIOS
+                       version 0.98 is known to be affected, 0.99 fixes the
+                       problem by letting the user disable the workaround.
+
        mga=            [HW,DRM]
 
        mousedev.tap_time=
diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c
index 3960ab7..219f86e 100644
--- a/arch/x86/kernel/mfgpt_32.c
+++ b/arch/x86/kernel/mfgpt_32.c
@@ -63,6 +63,21 @@ static int __init mfgpt_disable(char *s)
 }
 __setup("nomfgpt", mfgpt_disable);
 
+/* Reset the MFGPT timers. This is required by some broken BIOSes which already
+ * do the same and leave the system in an unstable state. TinyBIOS 0.98 is
+ * affected at least (0.99 is OK with MFGPT workaround left to off).
+ */
+static int __init mfgpt_fix(char *s)
+{
+       u32 val, dummy;
+
+       /* The following udocumented bit resets the MFGPT timers */
+       val = 0xFF; dummy = 0;
+       wrmsr(0x5140002B, val, dummy);
+       return 1;
+}
+__setup("mfgptfix", mfgpt_fix);
+
 /*
  * Check whether any MFGPTs are available for the kernel to use.  In most
  * cases, firmware that uses AMD's VSA code will claim all timers during
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to