Как «аннулировать» или «очистить» диапазон кэша процессора в архитектуре PowerPC? - PullRequest
1 голос
/ 17 октября 2019

Я работаю со встроенным устройством, которое связывается с моим PowerPC ЦП через PCIe. Из-за ограничений SDK я должен использовать версию ядра Linux 4.1.8. Эта версия не имеет функций, связанных с cache операциями в $KERNEL_SOURCE/arch/powerpc/include/asm/, такими как:

  • "invalidate_dcache_range()"
  • "flush_dcache_range()"
  • "clean_dcache_range()"

(в этом каталоге заголовок "cacheflush.h" просто содержит объявление упомянутых функций.)
Кроме того, SDK моего встроенного устройства должен вызывать эти функции для подготовки DMA доступа.
Обратите внимание, что версии ядра выше 4.5 предоставляют объявление этих функций.

Теперь у меня есть несколько вопросов:

  1. Я могу использовать и копировать функции, которые реализованы в более новых ядрах, вмое старое ядро ​​и пересобрать его, но изменение исходного кода ядра не имеет смысла, верно?
  2. Можете ли вы предложить какой-нибудь обходной путь для его решения?
  3. Как я могу проверить, что кэш аннулирован или очищенправильно? Есть ли способ прочитать блоки кеша в пространстве пользователя?

Спасибо,

...