freebsd-skq/sys
mav d1175426d7 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
..
amd64 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
arm Move ARM nexus rman initialization to attach routine. 2010-06-16 14:10:39 +00:00
boot Add a missing prototype 2010-06-20 08:03:06 +00:00
bsm Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
cam For the target port groups structures, don't allocate the initial element. 2010-06-14 22:02:18 +00:00
cddl Import latest ARC change from OpenSolaris: 2010-06-17 22:47:44 +00:00
compat ANSIfy prototypes in subr_usbd.c. 2010-06-12 12:19:08 +00:00
conf Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
contrib Provide kernel level headers for the libfdt code. 2010-06-02 17:24:41 +00:00
crypto Use the fpu_kern_enter() interface to properly separate usermode FPU 2010-06-05 16:00:53 +00:00
ddb MFp4 @178364: 2010-05-24 16:41:05 +00:00
dev Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
fs Eliminate unnecessary page queues locking. 2010-06-18 22:12:12 +00:00
gdb Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
geom 'unit' can be negative, so use signed type for it. 2010-06-14 21:58:55 +00:00
gnu Move checking against RLIMIT_FSIZE into one place, vn_rlimit_fsize(). 2010-05-05 16:44:25 +00:00
i386 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
ia64 The ptc.g operation for the Mckinley and Madison processors has the 2010-06-12 01:45:29 +00:00
isa Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
kern Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
kgssapi Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
libkern Provide memchr() in the libkern. 2010-06-02 17:27:23 +00:00
mips Extend the AR71XX watchdog debugging and data. 2010-06-19 12:12:39 +00:00
modules New netgraph node ng_patch(4). It performs data modification of packets 2010-06-09 12:25:57 +00:00
net Implement flexible BPF timestamping framework. 2010-06-15 19:28:44 +00:00
net80211 Remove GNU-style struct initialization. 2010-06-12 07:02:43 +00:00
netatalk Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
netgraph * Include sys/systm.h for KASSERT() 2010-06-15 08:53:13 +00:00
netinet Fix a rece condition in the shutdown handling. 2010-06-18 09:01:44 +00:00
netinet6 Fix our version of IPv6 address representation. 2010-05-19 00:35:47 +00:00
netipsec MFp4 @178283: 2010-05-24 16:27:47 +00:00
netipx Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
netnatm Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
netncp Switch to our preferred 2-clause BSD license. 2010-04-07 16:50:38 +00:00
netsmb Switch to our preferred 2-clause BSD license. 2010-04-07 16:50:38 +00:00
nfs Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
nfsclient In NFS clients, instead of inconsistently using #ifdef 2010-06-13 05:24:27 +00:00
nfsserver Patch the regular NFS server so that it returns ESTALE to the client 2010-03-26 01:19:29 +00:00
nlm Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
opencrypto Use the fpu_kern_enter() interface to properly separate usermode FPU 2010-06-05 16:00:53 +00:00
pc98 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
pci Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
powerpc Temporarily disable instruction relocation while setting up the kernel's 2010-06-20 16:56:48 +00:00
rpc When the regular NFS server replied to a UDP client out of the replay 2010-03-23 23:03:30 +00:00
security Add a case to make sure that internal audit records get converted 2010-05-04 15:29:07 +00:00
sparc64 Provide for multiple, cascaded PICs on PowerPC systems, and extend the 2010-06-18 14:06:27 +00:00
sun4v Missed change to sun4v while adding iparent lookup to the OFW interrupt 2010-06-18 16:29:03 +00:00
sys Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
teken Just use <stdint.h> instead of <inttypes.h>. We don't need it here. 2010-04-03 17:22:28 +00:00
tools Flattened Device Tree helper scripts. 2010-06-02 17:22:38 +00:00
ufs Ensure that VOP_ACCESSX is called with exclusively locked vnode for 2010-06-20 13:35:16 +00:00
vm Add a new column to the output of vmstat -z to indicate the number 2010-06-15 19:28:37 +00:00
x86 Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
xdr Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
xen Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00
Makefile Create a custom branch where I will be able to do the merge. 2010-03-19 00:19:55 +00:00