summaryrefslogtreecommitdiffstats
path: root/sys/arch/amd64/include/cpuvar.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Add TSC synchronization for multiprocessor machines.pirofti2019-08-091-1/+5
| | | | | | | | | | | | | | | | | CPU0 is the reference clock and all others are skewed. During CPU initialization the clocks synchronize by keeping a registry of each CPU clock skewness and adapting the TSC read routine accordingly. This commit also re-enables TSC as the default time source. Future work includes MSR-based synchronization via IA32_TSC_ADJUST and perhaps adding a task that is executed periodically to keep the clocks in sync in case they drift apart. Inspired from NetBSD. Tested by many and thoroughly reviewed by kettenis@, thank you! OK kettenis@, deraadt@
* Recalibrate TSC timecounter with HPET and PM timermikeb2017-10-061-1/+2
| | | | | | | | | | | | | If frequency of an invariant (non-stop) time stamp counter is measured using an independent working timecounter that has a known frequency, we can assume that the measured TSC frequency is as good as the resolution of the timecounter that we use to perform the measurement. This lets us switch from this high quality but expensive source to the cheaper TSC without sacrificing precision on a wide range of modern CPUs. From Adam Steen <adam@adamsteen.com.au> with tweaks from reyk@ and myself. Tested by brynet@, sthen@ and others, OK mlarkin, sthen
* Store the acpi processor ID/UID in struct cpu_info, and use it to attachkettenis2016-07-281-2/+3
| | | | | | acpicpu(4) drivers to the right cpu(4). ok mlarkin@, guenther@
* Make {x86,i82489,x2apic,i386}_ipi return voidsf2015-07-181-2/+2
| | | | | | They always returned 0 ok mlarkin@ kettenis@
* Make *_ipi_init return void on i386/amd64sf2015-07-181-2/+2
| | | | | | They always returned 0 ok mlarkin@ kettenis@
* Add support for x2apic modesf2015-04-191-2/+4
| | | | | | | | | This is currently only enabled on hypervisors because on real hardware, it requires interrupt remapping which we don't support yet. But on virtualization it reduces the number of vmexits required per IPI from 4 to 1, causing a significant speed-up for MP guests. ok kettenis@
* tedu x86_self_ipi()/i386_self_ipi()sf2015-01-271-2/+1
| | | | | | They are not used anywhere. ok mlarkin@
* First pass at removing clauses 3 and 4 from NetBSD licenses.ray2008-06-261-8/+1
| | | | | | | | | Not sure what's more surprising: how long it took for NetBSD to catch up to the rest of the BSDs (including UCB), or the amount of code that NetBSD has claimed for itself without attributing to the actual authors. OK deraadt@
* garbage collect the cpus_running global variable;thib2008-04-131-5/+1
| | | | pointed out by and ok drahn@, toby@;
* an amd64 arch support.mickey2004-01-281-0/+109
hacked by art@ from netbsd sources and then later debugged by me into the shape where it can host itself. no bootloader yet as needs redoing from the recent advanced i386 sources (anyone? ;)