CVSROOT:        /cvs
Module name:    src
Changes by:     chel...@cvs.openbsd.org 2022/11/08 10:34:13

Modified files:
        sys/arch/amd64/amd64: acpi_machdep.c cpu.c lapic.c 
        sys/arch/amd64/include: cpu.h _types.h 
        sys/arch/amd64/isa: clock.c 

Log message:
amd64: switch to clockintr(9)

Switch amd64 to the clockintr(9) subsystem.  There are lots of little
changes, but the bigs ones are listed here.

When using the local apic timer:

- Run the timer in one-shot mode.
- lapic_delay() is gone.  We can't use it to delay(9) when running
the timer in one-shot mode.
- Add a randomized statclock(); stathz = hz.
- Add support for switching to profhz when profiling is enabled;
profhz = stathz * 10.

When using the i8254/mc146818:

- i8254's clockintr() no longer has a monopoly on hardclock().
- mc146818's rtcintr() no longer has a monopoly on statclock().
- In profiling mode, the statclock() will drift very slightly
because (profhz = 1024) does not divide evenly into one billion.
We could avoid this by setting (profhz = 512) instead and
programming the RTC to run at that rate.

Early revisions reviewed by mlarkin@.  Extensively tested by mlarkin@
on a variety of physical and virtual hardware.  Additional testing
from dv@ and jmc@.

Link: https://marc.info/?l=openbsd-tech&m=166776339203279&w=2

ok kettenis@ mlarkin@

Reply via email to