CVSROOT: /cvs Module name: src Changes by: patr...@cvs.openbsd.org 2023/04/25 04:35:48
Modified files: sys/arch/arm64/dev: agintc.c Log message: Invalidate ITS caches during suspend/resume cycle to commit the changes to the LPIs. So far we have only flipped the enable bit in the shared memory, but it turns out that the state is actually cached in the ITS. We have to send an invalidation to flush it, both after disabling and enabling the LPI. We probably also should do it after establishing an interrupt, and especially when disestablishing, e.g. for PCIe hotplug. Since we do not currently store the device/event IDs we cannot do a targeted invalidation and have to fall back to sending one that clears the whole cache to each ITS. In the future we should keep some more state per established LPI. Furthermore we currently keep a list of LPIs in each ITS instance, which means in case we have multiple ITS we will re-use LPI numbers. But since there's no relevant HW so far that has those, there's no rish to fix that. This fixes suspend/resume on x13s with NVMe+MSI. ok kettenis@