Мне это тоже интересно. Глубоко не копал, смотрел поверхностно в ядре линукс. Что-то на эту тему там предусмотрено но полнота реализации очень сильно зависит от архитектуры. В каких то вариантах инвалидируют кеш целиком, в каких-то только кеш данных а в каких то просматривают таблицы и что-то делают. Правда быстродействие в случае просмотра таблиц вызывает сомнения. Поэтому в подавляющем большинстве случаев не заморачиваются такими сложностями а просто говорят "dma_alloc_coherent"