Atlantic controllers can retain receive descriptors and their data addresses after their rings are disabled. Reusing or releasing those mappings without invalidating the device cache has caused observed IOMMU and SMMU faults in Linux upstream reports (7a1bb49461b1, ed4d81c4b3f2 and 7526183cfdbe). Move global cache invalidation out of the per-ring stop routine. Disable every ring first, toggle invalidation once, and wait for its completion indication. Exclude Atlantic A0, as in the Linux workaround. Report a completion timeout rather than silently discarding it.
Details
Details
- Reviewers
nick_spun.io • nprice
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped