System Management Mode

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Режим системного управління (англ. System Management Mode, SMM) — режим виконання на процесорах x86/x86_64, при якому припиняється виконання іншого коду (включаючи операційні системи і гіпервізор), і запускається спеціальна програма, що зберігається в SMRAM в найбільш привілейованому режимі.

Технологія SMM була вперше реалізована в мікропроцесорі Intel 386SL. Спочатку SMM працював тільки на спеціальних процесорах (SL), але в 1992 році була впроваджена в 80486 і Intel Pentium. AMD реалізувала технологію в Enhanced Am486 (1994). Всі більш сучасні x86/x86-64 процесори підтримують її.

Серед можливих застосувань SMM:

  • Обробка системних помилок, таких як помилки пам'яті і чипсета;
  • Функції захисту, наприклад вимкнення процесорів при сильному перегріві;
  • Глибокі рівні енергозбереження;
  • Управління живленням, наприклад, схемами зміни напруги (VRM);
  • Емуляція периферії, яка була не реалізована на материнській платі або реалізація якої містить помилки;
  • Емуляція миші та клавіатури PS/2, при використанні USB-версій пристроїв;
  • Централізована конфігурація системи, наприклад на ноутбуках Toshiba і IBM;
  • Обхід систем захисту, вбудованих в ОС;
  • Запуск високопрівілегірованних руткітів, як було запропоновано на Black Hat 2008 ;
  • Емуляція або передача викликів на модуль Trusted Platform Module (TPM);

Активація SMM[ред.ред. код]

SMM активується за допомогою переривань SMI (system management interrupt - переривання системного управління), яке виникає:

  • За сигналом від чипсета або периферії на материнській платі. Використовується виділений контакт процесора SMI # .
  • Програмний SMI, посланий системним ПЗ через порт введення / виводу (часто використовується порт номер 0B2h).
  • Запис за адресою введення / виведення, для якого мікропрограмно встановлено необхідність активації SMM.

На найближчому кордоні інструкцій після отримання сигналу SMI #, процесор зберігає свій стан в пам'яті і переходить в SMM. Для виходу з SMM і відновлення стану процесора використовується інструкція RSM (0x0f 0xaa).

Проблеми[ред.ред. код]

  • Згідно з архітектурою SMM, переривання SMI не можуть бути заблоковані операційною системою
  • На старих чипсетах (до 2006 року) не виставлявся біт D_LOCK для захисту пам'яті SMM (що дозволяло створювати SMM-шкоди)
  • Так як програми обробки SMM (SMI handler) встановлюються з базової мікропрограми BIOS , передбачувані налаштування важливої периферії (наприклад, APIC) в ОС і програмах SMM можуть не збігатися
  • Робота в режимі SMM призупиняє роботу ОС. Стан процесора зберігається в SMRAM , а кеши write-back повинні бути скинуті. Через це можуть порушитися вимоги жорсткого реального часу. ОС Windows і ядро ​​Linux встановлюють «SMI Timeout» - період часу, в який будь-яка програма SMM повинна повернути управління операційній системі.
  • Для визначення входу процесора в SMM може знадобитися цифровий логічний аналізатор (додаткове обладнання). При роботі в SMM виставляється сигнал процесора SMIACT # .
  • Отримання кодів програм SMM для їх аналізу та налагодження також вимагає логічного аналізатора або зворотної розробки мікропрограм BIOS, так як під час виконання пам'ять TSEG, що зберігає програми SMM, недоступна ОС.

Див. також[ред.ред. код]