#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
243848 |
|
03-Dec-2012 |
kib |
MFC r242433: Enable the new instructions for reading and writing bases for %fs, %gs, when supported. Enable SMEP when supported.
MFC r242828: Do not try to enable new features in the %cr4 if running under hypervisor.
|
#
243139 |
|
16-Nov-2012 |
kib |
MFC r242432: Provide the reading and display of the Standard Extended Features, introduced with the IvyBridge CPUs. Provide the definitions for new bits in CR3 and CR4 registers.
|
#
239560 |
|
22-Aug-2012 |
kib |
MFC r239125: Do not apply errata 721 workaround when under hypervisor, since typical hypervisor does not implement access to the required MSR, causing #GP on boot.
|
#
233798 |
|
02-Apr-2012 |
jkim |
MFC: r233702
Work around Erratum 721 for AMD Family 10h and 12h processors.
|
#
231979 |
|
21-Feb-2012 |
kib |
MFC r230426: Add support for the extended FPU states on amd64, both for native 64bit and 32bit ABIs. As a side-effect, it enables AVX on capable CPUs.
MFC r230765: Synchronize the struct sigcontext definitions on x86 with mcontext_t.
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
220018 |
|
26-Mar-2011 |
jkim |
Improve CPU identifications of various IDT/Centaur/VIA, Rise and Transmeta CPUs. These CPUs need explicit MSR configuration to expose ceratin CPU capabilities (e.g., CMPXCHG8B) to work around compatibility issues with ancient software. Unfortunately, Rise mP6 does not set the CX8 bit in CPUID and there is no MSR to expose the feature although all mP6 processors are capable of CMPXCHG8B according to datasheets I found from the Net. Clean up and simplify VIA PadLock detection while I am in the neighborhood.
|
#
210774 |
|
02-Aug-2010 |
jhb |
Tweak the logic to disable CLFLUSH in virtual environments to work around problems with flushing the local APIC register range so that it checks vm_guest directly.
Reviewed by: kib, alc MFC after: 2 weeks
|
#
199253 |
|
13-Nov-2009 |
kib |
Amd64 init_secondary() calls initializecpu() while curthread is still not properly set up. r199067 added the call to TUNABLE_INT_FETCH() to initializecpu() that results in hang because AP are started when kernel environment is already dynamic and thus needs to acquire mutex, that is too early in AP start sequence to work.
Extract the code that should be executed only once, because it sets up global variables, from initializecpu() to initializecpucache(), and call the later only from hammer_time() executed on BSP. Now, TUNABLE_INT_FETCH() is done only once at BSP at the early boot stage.
In collaboration with: Mykola Dzham <freebsd levsha org ua> Reviewed by: jhb Tested by: ed, battlez
|
#
199215 |
|
12-Nov-2009 |
kuriyama |
- Style nits. - Remove unneeded TUNABLE_INT().
Suggested by: avg, kib
|
#
199067 |
|
09-Nov-2009 |
kuriyama |
- Add hw.clflush_disable loader tunable to avoid panic (trap 9) at map_invalidate_cache_range() even if CPU is not Intel. - This tunable can be set to -1 (default), 0 and 1. -1 is same as current behavior, which automatically disable CLFLUSH on Intel CPUs without CPUID_SS (should be occured on Xen only). You can specify 1 when this panic happened on non-Intel CPUs (such as AMD's). Because disabling CLFLUSH may reduce performance, you can try with setting 0 on Intel CPUs without SS to use CLFLUSH feature.
Reviewed by: kib Reported by: karl, kuriyama Related to: kern/138863
|
#
197663 |
|
01-Oct-2009 |
kib |
As a workaround, for Intel CPUs, do not use CLFLUSH in pmap_invalidate_cache_range() when self-snoop is apparently not reported in cpu features. We get a reserved trap when clflushing APIC registers window.
XEN in full system virtualization mode removes self-snoop from CPU features, making this a problem.
Tested by: csjp Reviewed by: alc MFC after: 3 days
|
#
197070 |
|
10-Sep-2009 |
jkim |
Consolidate CPUID to CPU family/model macros for amd64 and i386 to reduce unnecessary #ifdef's for shared code between them.
|
#
195820 |
|
22-Jul-2009 |
kib |
When the page caching attributes are changed, after new mapping is established, OS shall flush the caches on all processors that may have used the mapping previously. This operation is not needed if processors support self-snooping. If not, but clflush instruction is implemented on the CPU, series of the clflush can be used on the mapping region. Otherwise, we have to flush the whole cache. The later operation is very expensive, and AMD-made CPUs do not have self-snooping.
Implement cache flush for remapped region by using clflush for amd64, when supported by CPU.
Proposed and reviewed by: alc Approved by: re (kensmith)
|
#
187109 |
|
12-Jan-2009 |
jkim |
Add basic amd64 support for VIA Nano processors.
|
#
185341 |
|
26-Nov-2008 |
jkim |
Introduce cpu_vendor_id and replace a lot of strcmp(cpu_vendor, "...").
Reviewed by: jhb, peter (early amd64 version)
|
#
184101 |
|
20-Oct-2008 |
jkim |
Detect Advanced Power Management Information for AMD CPUs.
|
#
159783 |
|
19-Jun-2006 |
davidxu |
Add variable cpu_mxcsr_mask to save valid bits of mxcsr register.
|
#
151348 |
|
14-Oct-2005 |
jkim |
- Print number of physical/logical cores and more CPUID info. - Add newer CPUID definitions for future use.
Many thanks to Mike Tancsa <mike at sentex dot net> for providing test cases for Intel Pentium D and AMD Athlon 64 X2.
Approved by: anholt (mentor)
|
#
130224 |
|
07-Jun-2004 |
peter |
Initial PG_NX support (no-execute page bit) - export the rest of the cpu features (and amd's features). - turn on EFER_NXE, depending on the NX amd feature bit - reorg the identcpu stuff a bit in order to stop treating the amd features as second class features (since it is now a primary feature bit set) and make it easier to export.
|
#
122940 |
|
21-Nov-2003 |
peter |
Cosmetic and/or trivial sync up with i386.
Approved by: re (rwatson)
|
#
118031 |
|
25-Jul-2003 |
obrien |
Use __FBSDID().
Brought to you by: a boring talk at Ottawa Linux Symposium
|
#
114349 |
|
30-Apr-2003 |
peter |
Commit MD parts of a loosely functional AMD64 port. This is based on a heavily stripped down FreeBSD/i386 (brutally stripped down actually) to attempt to get a stable base to start from. There is a lot missing still. Worth noting: - The kernel runs at 1GB in order to cheat with the pmap code. pmap uses a variation of the PAE code in order to avoid having to worry about 4 levels of page tables yet. - It boots in 64 bit "long mode" with a tiny trampoline embedded in the i386 loader. This simplifies locore.s greatly. - There are still quite a few fragments of i386-specific code that have not been translated yet, and some that I cheated and wrote dumb C versions of (bcopy etc). - It has both int 0x80 for syscalls (but using registers for argument passing, as is native on the amd64 ABI), and the 'syscall' instruction for syscalls. int 0x80 preserves all registers, 'syscall' does not. - I have tried to minimize looking at the NetBSD code, except in a couple of places (eg: to find which register they use to replace the trashed %rcx register in the syscall instruction). As a result, there is not a lot of similarity. I did look at NetBSD a few times while debugging to get some ideas about what I might have done wrong in my first attempt.
|
#
112445 |
|
20-Mar-2003 |
dwmalone |
Extend CPU_ATHLON_SSE_HACK to cover a few more revisions of Athlon CPUs.
Submitted by: Jon Kuster <kwsn@earthlink.net> MFC after: 2 weeks
|
#
109700 |
|
22-Jan-2003 |
jhb |
- Move enable_sse()'s prototype to machine/md_var.h. - Sort definition of cpu_* variables appropriately. - Move cpu_fxsr out of the magic non-BSS set of variables and stick it in the BSS along with hw_instruction_sse (make the latter static as well).
Submitted by: bde (partially)
|
#
109696 |
|
22-Jan-2003 |
jhb |
Rename cpuid_cpuinfo to cpu_procinfo. bde requested that I rename this variable to something in the cpu_* namespace since that's what all the other cpuid variables were named and cpu_procinfo is what I came up with.
Requested by: bde
|
#
109026 |
|
09-Jan-2003 |
jhb |
Rework part of the previous processor name changes so that we read cpu_exthigh and cpu_brand in printcpuinfo() instead of in identify_cpu(). We also only do it for known-good values of cpu_vendor which is a bit more conservative.
Reviewed by: bde (mostly)
|
#
108947 |
|
08-Jan-2003 |
jhb |
- Add a cpu_exthigh variable to hold the highest extended cpuid value returned from cpuid 0x80000000. - Add a cpu_brand char array to hold the processor name returned by cpuid 0x80000002-0x80000004 on AMD, Intel, Transmeta, and possibly other CPUs. - Use cpuid to set cpu_exthigh and read the processor name if it is present in identify_cpu().
|
#
108911 |
|
07-Jan-2003 |
jhb |
Add a cpuid_cpuinfo variable to hold the results of %ebx from cpuid with %eax of 1 and set it in identify_cpu().
|
#
105216 |
|
16-Oct-2002 |
phk |
Be consistent about functions being static.
Spotted by: FlexeLint.
|
#
104094 |
|
28-Sep-2002 |
phk |
Be consistent about "static" functions: if the function is marked static in its prototype, mark it static at the definition too.
Inspired by: FlexeLint warning #512
|
#
103064 |
|
07-Sep-2002 |
peter |
Automatically enable CPU_ENABLE_SSE (detect and enable SSE instructions) if compiling with I686_CPU as a target. CPU_DISABLE_SSE will prevent this from happening and will guarantee the code is not compiled in.
I am still not happy with this, but gcc is now generating code that uses these instructions if you set CPUTYPE to p3/p4 or athlon-4/mp/xp or higher.
|
#
92860 |
|
21-Mar-2002 |
imp |
Fix abuses of cpu_critical_{enter,exit} by converting to intr_{disable,restore} as well as providing an implemenation of intr_{disable,restore}.
Reviewed by: jake, rwatson, jhb
|
#
90590 |
|
12-Feb-2002 |
dwmalone |
Add an option CPU_ATHLON_SSE_HACK which attempts to enable the SSE feature bit on newer Athlon CPUs if the BIOS has forgotten to enable it.
This patch was constructed using some info made available by John Clemens at http://www.deater.net/john/PavilionN5430.html
Reviewed by: -audit MFC after: 3 weeks
|
#
88088 |
|
17-Dec-2001 |
jhb |
Modify the critical section API as follows: - The MD functions critical_enter/exit are renamed to start with a cpu_ prefix. - MI wrapper functions critical_enter/exit maintain a per-thread nesting count and a per-thread critical section saved state set when entering a critical section while at nesting level 0 and restored when exiting to nesting level 0. This moves the saved state out of spin mutexes so that interlocking spin mutexes works properly. - Most low-level MD code that used critical_enter/exit now use cpu_critical_enter/exit. MI code such as device drivers and spin mutexes use the MI wrappers. Note that since the MI wrappers store the state in the current thread, they do not have any return values or arguments. - mtx_intr_enable() is replaced with a constant CRITICAL_FORK which is assigned to curthread->td_savecrit during fork_exit().
Tested on: i386, alpha
|
#
82957 |
|
04-Sep-2001 |
peter |
Mostly cosmetic. Move various variables from .s files to .c files so that gdb generates debug info for them.
|
#
82261 |
|
24-Aug-2001 |
peter |
Move cpu_fxsr definition to C code (so debug info is generated) and where it is easily #ifdef'ed so that we dont miss unintentional references to it.
|
#
81879 |
|
18-Aug-2001 |
peter |
There is nothing special that requires SSE to be only on 686 class cpus. This enables 586-only SMP kernels to compile again.
Problem reported by: Jacek Jedrzejczak <jacol@ids.gda.pl>
|
#
79662 |
|
13-Jul-2001 |
sobomax |
Unbroke kernel if I686_CPU is not defined.
|
#
79623 |
|
12-Jul-2001 |
peter |
Forgot this fix from another tree. make enable_sse() a real prototype.
|
#
79611 |
|
12-Jul-2001 |
peter |
Move init_sse() out of the "GenuineIntel" section, my AthlonMP system has it, for example, and it works fine.
|
#
79609 |
|
12-Jul-2001 |
peter |
Activate SSE/SIMD. This is the extra context switching support that we are required to do if we let user processes use the extra 128 bit registers etc.
This is the base part of the diff I got from: http://www.issei.org/issei/FreeBSD/sse.html I believe this is by: Mr. SUZUKI Issei <issei@issei.org> SMP support apparently by: Takekazu KATO <kato@chino.it.okayama-u.ac.jp> Test code by: NAKAMURA Kazushi <kaz@kobe1995.net>, see http://kobe1995.net/~kaz/FreeBSD/SSE.en.html
I have fixed a couple of style(9) deviations. I have some followup commits to fix a couple of non-style things.
|
#
74903 |
|
28-Mar-2001 |
jhb |
Switch from save/disable/restore_intr() to critical_enter/exit().
|
#
68490 |
|
08-Nov-2000 |
asmodai |
Fix some further english grammar and typo's.
|
#
68489 |
|
08-Nov-2000 |
asmodai |
Fix typo's: UPGRADE_CPU_HW_CACHE -> CPU_UPGRADE_HW_CACHE
|
#
65557 |
|
06-Sep-2000 |
jasone |
Major update to the way synchronization is done in the kernel. Highlights include:
* Mutual exclusion is used instead of spl*(). See mutex(9). (Note: The alpha port is still in transition and currently uses both.)
* Per-CPU idle processes.
* Interrupts are run in their own separate kernel threads and can be preempted (i386 only).
Partially contributed by: BSDi (BSD/OS) Submissions by (at least): cp, dfr, dillon, grog, jake, jhb, sheldonh
|
#
65273 |
|
31-Aug-2000 |
kato |
Improved Cyrix 486DX supports for NEC PC-98. - Enable WB cache via CCR2 and CR0. - Set the need_pre_dma_flush when the CPU_I486_ON_386 option is defined.
Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
|
#
61616 |
|
13-Jun-2000 |
kato |
Added new options CPU_PPRO2CELERON and CPU_L2_LATENCY to support Socket 8 to 370 converters. When (1) CPU_PPRO2CELERON option is defined, (2) Intel CPU is found and (3) CPU ID is 0x66?, L2 cache is enabled through MSR 0x11e. The L2 cache latency value can be specified by CPU_L2_LATENCY option. Default value of L2 cache latency is 5.
These options are useful if you use Socket 8 to Socket 370 converter (e.g. Power Leap's PL-Pro/II.) Most PentiumPro BIOSs don't enable L2 cache of Mendocino Celeron CPUs because they don't know Celeron CPUs. These options are needles if you use a Coppermine (FCPGA) Celeron or PentiumIII, becuase the L2 cache enable bit is hard wired and L2 cache is always enabled.
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
47926 |
|
15-Jun-1999 |
des |
Kill option FAILSAFE.
PR: i386/12187 Approved by: bde
|
#
42732 |
|
16-Jan-1999 |
kato |
There are two models of AMD K6-2 Model 8 (c.f. AMD's document), so the CPU stepping must be checked. Also, fixed print_AMD_info.
Submitted by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp>
|
#
42112 |
|
27-Dec-1998 |
msmith |
From the submitter:
CPU_WT_ALLOC does not work correctly for K6-2s of model 8+ and probably K6-3s (when they appear on the market soon). In addition, print_AMD_info() incorrectly printfs write allocation's size. I've fixed them, so they now Do The Right Thing, and added a "NO_MEMORY_HOLE" option to easily allow 15-16mb range handling for us K6 and K6-2 users.
Submitted by: Brian Feldman <green@unixhelp.org>
|
#
41770 |
|
14-Dec-1998 |
dillon |
Get rid of uninitialized variable warnings. No bugs found, just preinitializing some locals to 0 to get rid of the compiler warnings.
|
#
40003 |
|
06-Oct-1998 |
kato |
- Implement enabling write allocate on AMD K5/K6/K6-2 cpus. The code was originaly contributed by Kelly Yancey <kbyanc@freedomnet.com> in PR i386/6269 and revised by Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp> and me. Test was performed by Akio Morita and Toshiomi Moriki <moriki@db.is.kyushu-u.ac.jp>. - Fix stylistic bug in identcpu.c. - Update copyright in initcpu.c - Fix typo in LINT.
PR: 6269 and 6270
|
#
36094 |
|
16-May-1998 |
kato |
Disable local APIC in UP kernel. Intel specification update describes that local APIC should be disabled in UP system. However, some of old BIOS does not disable local APIC, and virtual wire mode through local APIC may cause int 15.
|
#
33068 |
|
04-Feb-1998 |
eivind |
Make FAILSAFE a new-style option.
|
#
32199 |
|
03-Jan-1998 |
kato |
Fix typo. Option `CPU_SUSP_HLT' didn't work on Cyrix 486DX box.
Submitted by: nyan@wyvern.cc.kogakuin.ac.jp (Takahashi Yoshihiro)
|
#
31338 |
|
21-Nov-1997 |
jlemon |
Correct CPU_CYRIX_NO_LOCK fix. PR: 5121 Pointed out by: Matthew Hunt
|
#
30813 |
|
28-Oct-1997 |
bde |
Removed unused #includes.
|
#
30162 |
|
06-Oct-1997 |
kato |
Added two Cyrix 6x86/6x86MX options.
- CPU_CYRIX_NO_LOCK enables weak locking. If this option is not set and FAILESAFE is defined, NO_LOCK bit of CCR1 is cleared. - CPU_WT_ALLOC enables write-through allocation.
|
#
27654 |
|
24-Jul-1997 |
kato |
Treat 6x86MX CPU as 686-class CPU instead of 586-class CPU.
|
#
26985 |
|
27-Jun-1997 |
kato |
Added CPU_DIRECT_MAPPED_CACHE option which sets L1 cache in direct mapped mode on Cyrix 486DLC box.
|
#
26298 |
|
31-May-1997 |
kato |
- Use `6x86MX' instead of `M2'. Cyrix officially use `6x86MX' for the CPU code-named `M2'.
- Use the result of cpuid instruction instead of DIR to identify 6x86MX cpu. DIR0 and DIR1 are not documented in the data sheet, and cpuid instruction is enabled at reset time.
- Add a function, init_6x86MX() to initialize 6x86MX cpu. It supports CPU_SUSP_HLT and CPU_IORT options. It always sets NC1 (640K - 1M is not cached.), and enables L1 cache in write-back mode.
- Fix typo in the comment in identblue().
|
#
25159 |
|
26-Apr-1997 |
kato |
Add new cpu type, CPU_CY486DX, which shows Cyrix 486S/DX series CPUs, and initialization routine for those CPUs.
Tested by: Bob Bishop <rb@gid.co.uk>
|
#
25015 |
|
19-Apr-1997 |
kato |
Don't disable CPU cache in init_486dlc. If BIOS supports Cyrix 486, BIOS enables CPU cache and other registers. If BIOS does not supports it, CPU cache is disabled at reset time.
This commit closes PR/3292.
PR: 3292
|
#
24200 |
|
24-Mar-1997 |
kato |
Fix typo. Submitted by: Bruce Evans <bde@zeta.org.au>
|
#
24113 |
|
22-Mar-1997 |
kato |
Oops, I forgot to `cvs add'. This file is a part of new CPU identification and initialization routines.
|