freebsd-dev/sys/isa
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
..
isa_common.c Allow device hints to wire the unit numbers of devices. 2008-11-18 21:01:54 +00:00
isa_common.h Allow device hints to wire the unit numbers of devices. 2008-11-18 21:01:54 +00:00
isa_dmareg.h - Move bus dependent defines to {isa,cbus}_dmareg.h. 2005-05-14 10:14:56 +00:00
isa_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
isahint.c Tweak the way that the ACPI and ISA bus drivers match hint devices to 2009-08-24 21:51:46 +00:00
isareg.h - Move bus dependent defines to {isa,cbus}_dmareg.h. 2005-05-14 10:14:56 +00:00
isavar.h Allow device hints to wire the unit numbers of devices. 2008-11-18 21:01:54 +00:00
pnp.c Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
pnpparse.c Be consistent with the spelling of "dependent" in user-visible places. 2006-12-30 11:55:47 +00:00
pnpreg.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
pnpvar.h
rtc.h Implement new event timers infrastructure. It provides unified APIs for 2010-06-20 21:33:29 +00:00
syscons_isa.c Do not attempt to switch to the same VTs between suspend and resume. 2010-05-26 16:37:54 +00:00
vga_isa.c Update d_mmap() to accept vm_ooffset_t and vm_memattr_t. 2009-12-29 21:51:28 +00:00