#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 и использование их из ядра также не должны быть необходимы.