acpihpet(4): acpihpet_delay: only use lower 32 bits of counter
authorcheloha <cheloha@openbsd.org>
Mon, 12 Sep 2022 10:58:05 +0000 (10:58 +0000)
committercheloha <cheloha@openbsd.org>
Mon, 12 Sep 2022 10:58:05 +0000 (10:58 +0000)
commit81ef01623ab77afbddf61dd8700a4241cbda76d9
tree9f75cc2d74586d2ebf3d73d570bde539b1b34dfa
parent5770f4b17e244981b78bafd8b2703981c0df2883
acpihpet(4): acpihpet_delay: only use lower 32 bits of counter

We can't use acpihpet_r() to implement acpihpet_delay().  Even if we
made acpihpet_r() atomic on amd64, i386 would still be incapable of
doing atomic 8-byte reads.  As-is, the code does a split read on all
platforms, which may or may not already be causing problems with TSC
calibration:

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

Switch from acpihpet_r() to bus_space_read_4() and only use the lower
32 bits of the counter.  This makes acpihpet_delay() slightly larger,
but unless we want two acpihpet_delay() implementations we have no
choice.

Link: https://marc.info/?l=openbsd-tech&m=166165347220077&w=2
ok jsg@
sys/dev/acpi/acpihpet.c