···1-/*2- * Enhanced CPU type detection by Mike Jagdis, Patrick St. Jean3- * and Martin Mares, November 1997.4- *5- * Force Cyrix 6x86(MX) and M II processors to report MTRR capability6- * and Cyrix "coma bug" recognition by7- * Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu> February 1999.8- * 9- * Force Centaur C6 processors to report MTRR capability.10- * Bart Hartgers <bart@etpmod.phys.tue.nl>, May 1999.11- *12- * Intel Mobile Pentium II detection fix. Sean Gilley, June 1999.13- *14- * IDT Winchip tweaks, misc clean ups.15- * Dave Jones <davej@suse.de>, August 199916- *17- * Better detection of Centaur/IDT WinChip models.18- * Bart Hartgers <bart@etpmod.phys.tue.nl>, August 1999.19- *20- * Cleaned up cache-detection code21- * Dave Jones <davej@suse.de>, October 199922- *23- * Added proper L2 cache detection for Coppermine24- * Dragan Stancevic <visitor@valinux.com>, October 199925- *26- * Added the original array for capability flags but forgot to credit 27- * myself :) (~1998) Fixed/cleaned up some cpu_model_info and other stuff28- * Jauder Ho <jauderho@carumba.com>, January 200029- *30- * Detection for Celeron coppermine, identify_cpu() overhauled,31- * and a few other clean ups.32- * Dave Jones <davej@suse.de>, April 200033- *34- * Pentium III FXSR, SSE support35- * General FPU state handling cleanups36- * Gareth Hughes <gareth@valinux.com>, May 200037- *38- * Added proper Cascades CPU and L2 cache detection for Cascades39- * and 8-way type cache happy bunch from Intel:^)40- * Dragan Stancevic <visitor@valinux.com>, May 2000 41- *42- * Forward port AMD Duron errata T13 from 2.2.17pre43- * Dave Jones <davej@suse.de>, August 200044- *45- * Forward port lots of fixes/improvements from 2.2.18pre46- * Cyrix III, Pentium IV support.47- * Dave Jones <davej@suse.de>, October 200048- *49- * Massive cleanup of CPU detection and bug handling;50- * Transmeta CPU detection,51- * H. Peter Anvin <hpa@zytor.com>, November 200052- *53- * VIA C3 Support.54- * Dave Jones <davej@suse.de>, March 200155- *56- * AMD Athlon/Duron/Thunderbird bluesmoke support.57- * Dave Jones <davej@suse.de>, April 2001.58- *59- * CacheSize bug workaround updates for AMD, Intel & VIA Cyrix.60- * Dave Jones <davej@suse.de>, September, October 2001.61- *62- */63-
···1- ChangeLog2-3- Prehistory Martin Tischh�user <martin@ikcbarka.fzk.de>4- Initial register-setting code (from proform-1.0).5- 19971216 Richard Gooch <rgooch@atnf.csiro.au>6- Original version for /proc/mtrr interface, SMP-safe.7- v1.08- 19971217 Richard Gooch <rgooch@atnf.csiro.au>9- Bug fix for ioctls()'s.10- Added sample code in Documentation/mtrr.txt11- v1.112- 19971218 Richard Gooch <rgooch@atnf.csiro.au>13- Disallow overlapping regions.14- 19971219 Jens Maurer <jmaurer@menuett.rhein-main.de>15- Register-setting fixups.16- v1.217- 19971222 Richard Gooch <rgooch@atnf.csiro.au>18- Fixups for kernel 2.1.75.19- v1.320- 19971229 David Wragg <dpw@doc.ic.ac.uk>21- Register-setting fixups and conformity with Intel conventions.22- 19971229 Richard Gooch <rgooch@atnf.csiro.au>23- Cosmetic changes and wrote this ChangeLog ;-)24- 19980106 Richard Gooch <rgooch@atnf.csiro.au>25- Fixups for kernel 2.1.78.26- v1.427- 19980119 David Wragg <dpw@doc.ic.ac.uk>28- Included passive-release enable code (elsewhere in PCI setup).29- v1.530- 19980131 Richard Gooch <rgooch@atnf.csiro.au>31- Replaced global kernel lock with private spinlock.32- v1.633- 19980201 Richard Gooch <rgooch@atnf.csiro.au>34- Added wait for other CPUs to complete changes.35- v1.736- 19980202 Richard Gooch <rgooch@atnf.csiro.au>37- Bug fix in definition of <set_mtrr> for UP.38- v1.839- 19980319 Richard Gooch <rgooch@atnf.csiro.au>40- Fixups for kernel 2.1.90.41- 19980323 Richard Gooch <rgooch@atnf.csiro.au>42- Move SMP BIOS fixup before secondary CPUs call <calibrate_delay>43- v1.944- 19980325 Richard Gooch <rgooch@atnf.csiro.au>45- Fixed test for overlapping regions: confused by adjacent regions46- 19980326 Richard Gooch <rgooch@atnf.csiro.au>47- Added wbinvd in <set_mtrr_prepare>.48- 19980401 Richard Gooch <rgooch@atnf.csiro.au>49- Bug fix for non-SMP compilation.50- 19980418 David Wragg <dpw@doc.ic.ac.uk>51- Fixed-MTRR synchronisation for SMP and use atomic operations52- instead of spinlocks.53- 19980418 Richard Gooch <rgooch@atnf.csiro.au>54- Differentiate different MTRR register classes for BIOS fixup.55- v1.1056- 19980419 David Wragg <dpw@doc.ic.ac.uk>57- Bug fix in variable MTRR synchronisation.58- v1.1159- 19980419 Richard Gooch <rgooch@atnf.csiro.au>60- Fixups for kernel 2.1.97.61- v1.1262- 19980421 Richard Gooch <rgooch@atnf.csiro.au>63- Safer synchronisation across CPUs when changing MTRRs.64- v1.1365- 19980423 Richard Gooch <rgooch@atnf.csiro.au>66- Bugfix for SMP systems without MTRR support.67- v1.1468- 19980427 Richard Gooch <rgooch@atnf.csiro.au>69- Trap calls to <mtrr_add> and <mtrr_del> on non-MTRR machines.70- v1.1571- 19980427 Richard Gooch <rgooch@atnf.csiro.au>72- Use atomic bitops for setting SMP change mask.73- v1.1674- 19980428 Richard Gooch <rgooch@atnf.csiro.au>75- Removed spurious diagnostic message.76- v1.1777- 19980429 Richard Gooch <rgooch@atnf.csiro.au>78- Moved register-setting macros into this file.79- Moved setup code from init/main.c to i386-specific areas.80- v1.1881- 19980502 Richard Gooch <rgooch@atnf.csiro.au>82- Moved MTRR detection outside conditionals in <mtrr_init>.83- v1.1984- 19980502 Richard Gooch <rgooch@atnf.csiro.au>85- Documentation improvement: mention Pentium II and AGP.86- v1.2087- 19980521 Richard Gooch <rgooch@atnf.csiro.au>88- Only manipulate interrupt enable flag on local CPU.89- Allow enclosed uncachable regions.90- v1.2191- 19980611 Richard Gooch <rgooch@atnf.csiro.au>92- Always define <main_lock>.93- v1.2294- 19980901 Richard Gooch <rgooch@atnf.csiro.au>95- Removed module support in order to tidy up code.96- Added sanity check for <mtrr_add>/<mtrr_del> before <mtrr_init>.97- Created addition queue for prior to SMP commence.98- v1.2399- 19980902 Richard Gooch <rgooch@atnf.csiro.au>100- Ported patch to kernel 2.1.120-pre3.101- v1.24102- 19980910 Richard Gooch <rgooch@atnf.csiro.au>103- Removed sanity checks and addition queue: Linus prefers an OOPS.104- v1.25105- 19981001 Richard Gooch <rgooch@atnf.csiro.au>106- Fixed harmless compiler warning in include/asm-i386/mtrr.h107- Fixed version numbering and history for v1.23 -> v1.24.108- v1.26109- 19990118 Richard Gooch <rgooch@atnf.csiro.au>110- Added devfs support.111- v1.27112- 19990123 Richard Gooch <rgooch@atnf.csiro.au>113- Changed locking to spin with reschedule.114- Made use of new <smp_call_function>.115- v1.28116- 19990201 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>117- Extended the driver to be able to use Cyrix style ARRs.118- 19990204 Richard Gooch <rgooch@atnf.csiro.au>119- Restructured Cyrix support.120- v1.29121- 19990204 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>122- Refined ARR support: enable MAPEN in set_mtrr_prepare()123- and disable MAPEN in set_mtrr_done().124- 19990205 Richard Gooch <rgooch@atnf.csiro.au>125- Minor cleanups.126- v1.30127- 19990208 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>128- Protect plain 6x86s (and other processors without the129- Page Global Enable feature) against accessing CR4 in130- set_mtrr_prepare() and set_mtrr_done().131- 19990210 Richard Gooch <rgooch@atnf.csiro.au>132- Turned <set_mtrr_up> and <get_mtrr> into function pointers.133- v1.31134- 19990212 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>135- Major rewrite of cyrix_arr_init(): do not touch ARRs,136- leave them as the BIOS have set them up.137- Enable usage of all 8 ARRs.138- Avoid multiplications by 3 everywhere and other139- code clean ups/speed ups.140- 19990213 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>141- Set up other Cyrix processors identical to the boot cpu.142- Since Cyrix don't support Intel APIC, this is l'art pour l'art.143- Weigh ARRs by size:144- If size <= 32M is given, set up ARR# we were given.145- If size > 32M is given, set up ARR7 only if it is free,146- fail otherwise.147- 19990214 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>148- Also check for size >= 256K if we are to set up ARR7,149- mtrr_add() returns the value it gets from set_mtrr()150- 19990218 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>151- Remove Cyrix "coma bug" workaround from here.152- Moved to linux/arch/i386/kernel/setup.c and153- linux/include/asm-i386/bugs.h154- 19990228 Richard Gooch <rgooch@atnf.csiro.au>155- Added MTRRIOC_KILL_ENTRY ioctl(2)156- Trap for counter underflow in <mtrr_file_del>.157- Trap for 4 MiB aligned regions for PPro, stepping <= 7.158- 19990301 Richard Gooch <rgooch@atnf.csiro.au>159- Created <get_free_region> hook.160- 19990305 Richard Gooch <rgooch@atnf.csiro.au>161- Temporarily disable AMD support now MTRR capability flag is set.162- v1.32163- 19990308 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>164- Adjust my changes (19990212-19990218) to Richard Gooch's165- latest changes. (19990228-19990305)166- v1.33167- 19990309 Richard Gooch <rgooch@atnf.csiro.au>168- Fixed typo in <printk> message.169- 19990310 Richard Gooch <rgooch@atnf.csiro.au>170- Support K6-II/III based on Alan Cox's <alan@redhat.com> patches.171- v1.34172- 19990511 Bart Hartgers <bart@etpmod.phys.tue.nl>173- Support Centaur C6 MCR's.174- 19990512 Richard Gooch <rgooch@atnf.csiro.au>175- Minor cleanups.176- v1.35177- 19990707 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>178- Check whether ARR3 is protected in cyrix_get_free_region()179- and mtrr_del(). The code won't attempt to delete or change it180- from now on if the BIOS protected ARR3. It silently skips ARR3181- in cyrix_get_free_region() or returns with an error code from182- mtrr_del().183- 19990711 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>184- Reset some bits in the CCRs in cyrix_arr_init() to disable SMM185- if ARR3 isn't protected. This is needed because if SMM is active186- and ARR3 isn't protected then deleting and setting ARR3 again187- may lock up the processor. With SMM entirely disabled, it does188- not happen.189- 19990812 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>190- Rearrange switch() statements so the driver accomodates to191- the fact that the AMD Athlon handles its MTRRs the same way192- as Intel does.193- 19990814 Zolt�n B�sz�rm�nyi <zboszor@mail.externet.hu>194- Double check for Intel in mtrr_add()'s big switch() because195- that revision check is only valid for Intel CPUs.196- 19990819 Alan Cox <alan@redhat.com>197- Tested Zoltan's changes on a pre production Athlon - 100%198- success.199- 19991008 Manfred Spraul <manfreds@colorfullife.com>200- replaced spin_lock_reschedule() with a normal semaphore.201- v1.36202- 20000221 Richard Gooch <rgooch@atnf.csiro.au>203- Compile fix if procfs and devfs not enabled.204- Formatting changes.205- v1.37206- 20001109 H. Peter Anvin <hpa@zytor.com>207- Use the new centralized CPU feature detects.208-209- v1.38210- 20010309 Dave Jones <davej@suse.de>211- Add support for Cyrix III.212-213- v1.39214- 20010312 Dave Jones <davej@suse.de>215- Ugh, I broke AMD support.216- Reworked fix by Troels Walsted Hansen <troels@thule.no>217-218- v1.40219- 20010327 Dave Jones <davej@suse.de>220- Adapted Cyrix III support to include VIA C3.221-222- v2.0223- 20020306 Patrick Mochel <mochel@osdl.org>224- Split mtrr.c -> mtrr/*.c225- Converted to Linux Kernel Coding Style226- Fixed several minor nits in form227- Moved some SMP-only functions out, so they can be used228- for power management in the future.229- TODO: Fix user interface cruft.