freebsd-dev/sys/conf
Alexander Motin 875b8844be Implement new event timers infrastructure. It provides unified APIs for
writing event timer drivers, for choosing best possible drivers by machine
independent code and for operating them to supply kernel with hardclock(),
statclock() and profclock() events in unified fashion on various hardware.

Infrastructure provides support for both per-CPU (independent for every CPU
core) and global timers in periodic and one-shot modes. MI management code
at this moment uses only periodic mode, but one-shot mode use planned for
later, as part of tickless kernel project.

For this moment infrastructure used on i386 and amd64 architectures. Other
archs are welcome to follow, while their current operation should not be
affected.

This patch updates existing drivers (i8254, RTC and LAPIC) for the new
order, and adds event timers support into the HPET driver. These drivers
have different capabilities:
 LAPIC - per-CPU timer, supports periodic and one-shot operation, may
freeze in C3 state, calibrated on first use, so may be not exactly precise.
 HPET - depending on hardware can work as per-CPU or global, supports
periodic and one-shot operation, usually provides several event timers.
 i8254 - global, limited to periodic mode, because same hardware used also
as time counter.
 RTC - global, supports only periodic mode, set of frequencies in Hz
limited by powers of 2.

Depending on hardware capabilities, drivers preferred in following orders,
either LAPIC, HPETs, i8254, RTC or HPETs, LAPIC, i8254, RTC.
User may explicitly specify wanted timers via loader tunables or sysctls:
kern.eventtimer.timer1 and kern.eventtimer.timer2.
If requested driver is unavailable or unoperational, system will try to
replace it. If no more timers available or "NONE" specified for second,
system will operate using only one timer, multiplying it's frequency by few
times and uing respective dividers to honor hz, stathz and profhz values,
set during initial setup.
2010-06-20 21:33:29 +00:00
..
defines
files Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
files.amd64 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
files.arm Convert Marvell ARM platforms to FDT convention. 2010-06-13 13:28:53 +00:00
files.i386 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
files.ia64 Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00
files.mips Merge jmallett@'s n64 work into HEAD - changeset 4 2010-06-17 05:03:01 +00:00
files.pc98 Move the MD support for PCI message signalled interrupts to the x86 tree 2010-06-08 18:36:03 +00:00
files.powerpc Add a driver for the CPU temperature sensors attached over I2C on the 2010-06-05 17:51:37 +00:00
files.sparc64 Change ad_firmware_geom_adjust() to operate on a struct disk * only and 2010-05-20 12:46:19 +00:00
files.sun4v Fix some sorting and whitespace nits. 2010-04-24 16:27:43 +00:00
kern.mk WITH_CTF can now be specified in src.conf (not recommended, there 2010-04-02 06:55:31 +00:00
kern.post.mk WITH_CTF can now be specified in src.conf (not recommended, there 2010-04-02 06:55:31 +00:00
kern.pre.mk Revert r206179 (by imp) and do something similar which is more consistent 2010-04-22 09:20:17 +00:00
kmod_syms.awk
kmod.mk Import mvs(4) - Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA controllers 2010-05-02 19:28:30 +00:00
ldscript.amd64
ldscript.arm
ldscript.i386
ldscript.ia64
ldscript.mips - Move .text and all sections up to .bss inclusive to the beginning of 2010-01-23 05:59:10 +00:00
ldscript.mips.cfe Use KERNLOADADDR instead of hardcoded address. This is required to be able to 2010-02-22 01:48:38 +00:00
ldscript.mips.mips64
ldscript.mips.octeon1.32 Harmonize Octeon ldscripts, reducing gratuitous diffs and using KERNLOADADDR in 2010-03-05 23:03:20 +00:00
ldscript.mips.octeon1.64 Harmonize Octeon ldscripts, reducing gratuitous diffs and using KERNLOADADDR in 2010-03-05 23:03:20 +00:00
ldscript.mips.octeon1.n32 Harmonize Octeon ldscripts, reducing gratuitous diffs and using KERNLOADADDR in 2010-03-05 23:03:20 +00:00
ldscript.powerpc
ldscript.sparc64
Makefile.amd64
Makefile.arm Convert Marvell ARM platforms to FDT convention. 2010-06-13 13:28:53 +00:00
Makefile.i386
Makefile.ia64
Makefile.mips Merge r187428, r191079, r195533, r195669, r197004, r197012 and r197015 2010-01-10 05:34:46 +00:00
Makefile.pc98
Makefile.powerpc
Makefile.sparc64
Makefile.sun4v
makeLINT.mk Generate a second LINT configuration for i386 and amd64 in 2010-01-08 19:00:20 +00:00
makeLINT.sed
newvers.sh Revert to r197433, the more recent change doesn't work for the common 2010-03-10 01:00:37 +00:00
NOTES Only enable kdtrace hook in the LINT on the architectures that implement it. 2010-06-18 18:51:09 +00:00
options New netgraph node ng_patch(4). It performs data modification of packets 2010-06-09 12:25:57 +00:00
options.amd64 Merge COUNT_XINVLTLB_HITS and COUNT_IPIS kernel options from i386 to amd64. 2010-06-17 11:54:49 +00:00
options.arm Convert Marvell ARM platforms to FDT convention. 2010-06-13 13:28:53 +00:00
options.i386 Make NKPT a kernel option on i386 so that it can be set to a non-default 2010-03-10 19:50:52 +00:00
options.ia64 Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00
options.mips Add CPU_CNMIPS for the core that's in Octeon CPUs. 2010-02-25 11:54:10 +00:00
options.pc98 Unbreak the build for pc98. Specify the newly introduced, for ia32, 2010-01-16 12:24:12 +00:00
options.powerpc
options.sparc64 Add a driver for the `Fire' JBus to PCIe bridges found in at least 2009-12-27 16:55:44 +00:00
options.sun4v
systags.sh