svn commit: r209371 - in head/sys: amd64/amd64 amd64/include
conf dev/acpica i386/i386 i386/include isa kern pc98/cbus sys
x86/isa x86/x86
Kostik Belousov
kostikbel at gmail.com
Mon Jun 21 19:58:43 UTC 2010
On Sun, Jun 20, 2010 at 09:33:29PM +0000, Alexander Motin wrote:
> Author: mav
> Date: Sun Jun 20 21:33:29 2010
> New Revision: 209371
> URL: http://svn.freebsd.org/changeset/base/209371
>
> Log:
> 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.
This broke QEMU for me. I cannot boot FreeBSD guest under QEMU anymore.
QEMU (not FreeBSD kernel) panics with
qemu: level-triggered hpet not supported
message.
Setting kern.eventtimer.timer1 to LAPIC or i8254, and timer2 to NONE
does not help.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20100621/e41dab03/attachment.pgp
More information about the svn-src-head
mailing list