i386: i8254_initclocks: set IPL_MPSAFE for clock/rtc IRQs
authorcheloha <cheloha@openbsd.org>
Tue, 22 Aug 2023 17:13:22 +0000 (17:13 +0000)
committercheloha <cheloha@openbsd.org>
Tue, 22 Aug 2023 17:13:22 +0000 (17:13 +0000)
commit9cd62917ab6617d55cfc87af69b835e445674ccd
tree8ff3c8d794d22ff38a4222e7e89034f5fabd8981
parent5b707e820d80eb33e3911aaca96cc24b37e13e2e
i386: i8254_initclocks: set IPL_MPSAFE for clock/rtc IRQs

Setting IPL_MPSAFE for the i8254/mc146818 IRQs appeases a KASSERT in
apic_intr_establish() and allows the system to boot via the i8254
path.  This makes testing changes to the i8254/mc146818 code much
easier on modern hardware without mucking with the GENERIC config.  We
already set IPL_MPSAFE for these IRQs in the equivalent amd64 code.

Now, setting IPL_MPSAFE is a lie: the i8254 and mc146818 IRQs are not
MP-safe.  However, the lie is harmless because we only reach
i8254_initclocks() if (a) there is no APIC at all, or (b) we fail to
calibrate the local APIC timer.

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

ok mlarkin@
sys/arch/i386/isa/clock.c