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@

Reply via email to