2016-12-29 10 views
0

Как и в ftrace, у меня есть функция, которая печатает адреса всех функций, вызываемых при загрузке ядра на доске armv7. Адреса печатаются правильно до setup_arch вызов функции в start_kernel функции, но после этого случайные адреса печатаются. Я думаю, что это проблема спин-блокировки, поскольку эти адреса при сопоставлении ссылаются на такие функции, как _raw_spin_lock_irqsave и add_preempt_count. Это может быть не проблема спин-блокировки. Любые предложения по его решению?Случайные адреса печатаются неопределенно при загрузке ядра на armv7

+0

Кажется разумным, что функции spin_lock называются экстенсивно после «start_kernel». Почему вы говорите, что это случайные адреса? – levengli

+0

@levengli У меня есть моя собственная функция, как я сказал в вопросе, который я добавил в 'start_kernel' для целей тестирования. Он правильно печатает адреса функций ядра перед 'setup_arch', но после того, как будут напечатаны случайные адреса, которые относятся к блокировкам. Есть ли способ отключить спинлоков? – arceus

ответ

0

На основе вашего комментария возникает вопрос, как отключить spin_locks, чтобы уточнить файлы журнала.

При отключении блокировок на многоядерной системе может произойти ошибка, которая может привести к ошибке системы в степени сбоя - это можно сделать.

include/linux/spinlock.h показывает, что spin_locks можно отключить, скомпилировав ядро ​​с CONFIG_SMP и CONFIG_DEBUG_SPINLOCK undefined.

+0

Я думаю, что это может быть связано с некоторыми прерываниями, которые пытаются получить спин-блокировку. Есть ли способ проверить, разрешены ли прерывания при запуске моей функции. – arceus