Как и в ftrace, у меня есть функция, которая печатает адреса всех функций, вызываемых при загрузке ядра на доске armv7. Адреса печатаются правильно до setup_arch
вызов функции в start_kernel
функции, но после этого случайные адреса печатаются. Я думаю, что это проблема спин-блокировки, поскольку эти адреса при сопоставлении ссылаются на такие функции, как _raw_spin_lock_irqsave
и add_preempt_count
. Это может быть не проблема спин-блокировки. Любые предложения по его решению?Случайные адреса печатаются неопределенно при загрузке ядра на armv7
ответ
На основе вашего комментария возникает вопрос, как отключить spin_locks, чтобы уточнить файлы журнала.
При отключении блокировок на многоядерной системе может произойти ошибка, которая может привести к ошибке системы в степени сбоя - это можно сделать.
include/linux/spinlock.h показывает, что spin_locks можно отключить, скомпилировав ядро с CONFIG_SMP
и CONFIG_DEBUG_SPINLOCK
undefined.
Я думаю, что это может быть связано с некоторыми прерываниями, которые пытаются получить спин-блокировку. Есть ли способ проверить, разрешены ли прерывания при запуске моей функции. – arceus
Кажется разумным, что функции spin_lock называются экстенсивно после «start_kernel». Почему вы говорите, что это случайные адреса? – levengli
@levengli У меня есть моя собственная функция, как я сказал в вопросе, который я добавил в 'start_kernel' для целей тестирования. Он правильно печатает адреса функций ядра перед 'setup_arch', но после того, как будут напечатаны случайные адреса, которые относятся к блокировкам. Есть ли способ отключить спинлоков? – arceus