HPET(4)
π NAME π
okay so this is hpet(4) bestie, aka the High Precision Event Timer driver β¨ it's a kernel interfaces manual page and it's literally about time. iconic.
πΈ SYNOPSIS πΈ
so like. if you wanna compile this driver into the kernel (yes we're doing it the hard way, no cap), you drop these lines into your kernel configuration file:
device acpi
and then there's a lil squad of tunables you can set from loader(8) β here they are, one by one, no skipping:
hint.hpet.X.allowed_irqsβ this one is a 32bit mask π«Ά every bit you set gives the driver permission to use that respective IRQ, but only if the BIOS also set the matching capability bit in the comparator's configuration register. Default value is0xffff0000, except on some known broken hardware (rip to those chips π).hint.hpet.X.clockβ this controls event timers functionality support. Set it to0and you disable it, periodt. Default value is1.hint.hpet.X.legacy_routeβ this controls the"LegacyReplacement Route"mode π if it's enabled, HPET will straight up steal IRQ0 from the i8254 timer and IRQ8 from the RTC. before you do that, make sure those respective drivers aren't using interrupts anymore, by also setting:
hint.attimer.0.clock=0
hint.atrtc.0.clock=0
Default value is 0.
hint.hpet.X.per_cpuβ controls how much per-CPU event timers the driver should attempt to register. heads up: this functionality requires every comparator in a group to have its own unshared IRQ, so it depends on hardware capabilities and interrupts configuration. Default value is1.
β¨ DESCRIPTION β¨
This driver uses High Precision Event Timer hardware β it's part of the chipset and it's usually enumerated via ACPI β to supply the kernel with one time counter and several event timers (usually from 3 to 8, she's generous π
).
The hardware includes a single main counter with a known increment frequency (10MHz or more), plus several programmable comparators (optionally with automatic reload feature, fancy π¦). When the value of the main counter matches the current value of any comparator, an interrupt can be generated.
Depending on hardware capabilities and configuration, that interrupt can be delivered as:
- a regular I/O APIC interrupt (ISA or PCI) in the range from
0to31, or - a Front Side Bus interrupt, alike to PCI MSI interrupts, or
- in the so called
"LegacyReplacement Route", where HPET can steal IRQ0 of i8254 and IRQ8 of the RTC.
The interrupt can be either edge- or level-triggered π and in that last case (level, bestie) they could be safely shared with PCI IRQs.
The driver prefers to use FSB interrupts if they're supported, so it can avoid sharing β main character energy fr fr. If that's not possible, it uses a single sharable IRQ from the PCI range. The other modes (LegacyReplacement and ISA IRQs) require special care to set up, but they could be configured manually via device hints. iykyk.
Event timers provided by the driver support both one-shot and periodic modes, and they're irrelevant to CPU power states π₯
Depending on hardware capabilities and configuration, the driver can expose each comparator as a separate event timer, or group them into one or several per-CPU event timers. In that last case, the interrupt of every one of those comparators within the group is bound to a specific CPU core π This is possible only when each of these comparators has its own unsharable IRQ.
π SEE ALSO π
acpi(4), apic(4), atrtc(4), attimer(4), eventtimers(4), timecounters(4)
π« HISTORY π«
The hpet driver first appeared in FreeBSD 6.3 β Support for event timers was added in FreeBSD 9.0.
okay that's the whole page bestie, mwah π«Ά this one came from the Debian crew and it's dated September 14, 2010 β vintage but still slaying, and the manual section is HPET(4). go forth and time things accurately π
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2010 Alexander Motin <mav@FreeBSD.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms