CVSROOT: /cvs Module name: src Changes by: d...@cvs.openbsd.org 2025/07/06 06:22:31
Modified files: sys/arch/arm64/dev: agintc.c ampintc.c aplintc.c bcm2836_intr.c Log message: rework and try to unify ipi handlers. agintc and ampintc tried to allocate an interrupt per type of ipi, but could fall back to a combined ipi handler if needed. aplintc and bcm2836_intr always used a combined handler. i want to add another IPI in the future, so this diff sets it up to be as easy as possible by making all these drivers consistent around ipi handling. in this verson the type of IPI is encoded as a bit in a reason word, and then an IPI is sent to the target cpu. the ipi handler loops over the encoded bits and farms out handling to the more specific handlers as necessary. the nop ipi, which is the most common ipi, is optimised to avoid the atomic ops. it just needs the remote cpu to wake up, it doesnt rely on it runnning specific code, so we don't encode any bit in the reason word and just send the ipi. the handler special cases no bits set and returns immediately. testing and ok kettenis@