Я пишу некоторый код прошивки, работающий в режиме управления системой (SMM) на платформе Intel. Я хочу полностью понять, как запускается мой обработчик SMI.
Я прочитал из руководства Intel, что:
Единственный способ войти в SMM — подать сигнал SMI через контакт SMI# на процессоре или через сообщение SMI, полученное через шину APIC.
Я также читал, что синхронный SMI может быть запущен записью в порт ввода-вывода.
Мое понимание таково:
SMM — это просто особый режим работы процессора. Исходя из моего предыдущего опыта, всякий раз, когда я хочу изменить состояние процессора, например включить подкачку страниц или войти в защищенный режим, я обычно изменяю регистр управления< /strong> или Специфические для модели регистры (MSR). Эти регистры являются частью процессора, и я могу поверить, что если я изменю некоторые их биты, произойдет какая-то внутренняя магия.
Но что означает приведенный выше порт ввода-вывода? Куда указывает этот порт? Если запись в порт также может вызывать SMI, то как подход к записи порта связан с каноническими способами контакта SMI# и сообщения SMI эм>? И можно ли изменить этот номер порта?
processor pins -> 8259A -> APIC -> MSI
. - person smwikipedia   schedule 24.07.2017