Как с помощью драйвера A53 настроить pl310?

#caching #linux-kernel #arm64

#кэширование #linux-ядро #arm64

Вопрос:

Я не нашел никакой информации о том, что какая-либо платформа A53 работает с контроллером кэша pl310.

Я не уверен, что использование контроллера кэша, подобного pl310, по-прежнему является типичным способом для платформы A53 aarch64.

Если мне нужно использовать pl310 в моем A53, как я могу написать драйвер для него под Linux? Множество регистров pl310 защищены только для записи.

Ответ №1:

Я не эксперт по ядру Linux, но я бы сказал, что "arm,pl310-cache" совместимый драйвер для PL310 и друзей в Linux уже существует, arch/arm/ mm/cache-l2x0.c.

Обновление: это технический документ пятилетней давности, но в нем упоминается pl310.

Но в документации ядра для драйвера l2c2x0 есть следующее примечание:

 Note 1: The description in this document doesn't apply to integrated L2
    cache controllers as found in e.g. Cortex-A15/A7/A57/A53. These
    integrated L2 controllers are assumed to be all preconfigured by
    early secure boot code. Thus no need to deal with their configuration
in the kernel at all.
  

Комментарии:

1. это для режима arm32, в aarch64 некоторые регистры доступны для записи только в secure world, но ядро обычно работает в незащищенном el1

2. Я вижу, вы хотели знать, как написать новый, соответствующий вашим потребностям. В этом случае, может быть, вы могли бы использовать существующий в качестве основы и заменить части кода вызовами функционально эквивалентных вызовов служб SMC, как это делают drivers/phy/marvell/phy-mvebu-a3700-comphy.c и drivers/mailbox/zynqmp-ipi-mailbox.c . В этом случае вам пришлось бы создавать новые вызовы служб SMC и добавлять их в вашу ARM Trusted Firmware bl31 / secure monitor.

3. Мне было интересно, есть ли у вас в руках цель Cortex-A53 с контроллером кэша PL310 прямо сейчас, или вы хотите знать, будет ли такая гипотетическая платформа работать в соответствии с вашими требованиями?

4. Я рассмотрю пример кода с использованием SMC, большое спасибо

5. Согласно примечанию, вам не должна потребоваться настройка pl310 в ядре, таким образом, реализация вызовов SMC и использование их из ядра также не должны быть необходимы.