Modo de Gerencia del Sistema
# Modo de Gerencia del Sistema

El Modo de Gerencia de Sistema, o System Management Mode (SMM) en inglés, es un modo de operación lanzado por primera vez con el Intel 386SL y disponible en microprocesadores posteriores de la arquitectura x86, en el que es suspendida toda la ejecución normal (incluyendo el sistema operativo), y es ejecutado un software especial separado en un modo de alto privilegio (usualmente un depurador en firmware o asistido por hardware).

## Uso

Algunos usos comunes del SMM son:

* Para emular hardware de la tarjeta madre que no está implementado o tiene errores (bugs).
* Operaciones de gerencia de energía, como encendido de ventiladores.
* Para emular un ratón o un teclado PS/2 desde un USB.
* Funciones de seguridad del sistema, como apagar el computador cuando hay alta temperatura en el CPU.
* Configuración del sistema, como por ejemplo en los computadores notebook de Toshiba e IBM.

## Entrando al SMM

Al SMM se entra por medio del SMI, interrupción de gerencia del sistema (system management interrupt), que es causada por:

* El hardware de la tarjeta madre enviando una señal por medio de un pin designado del chip procesador. Esta señal puede ser un evento independiente, o disparada por el software del sistema vía una lectura de I/O de una localización considerada especial por la lógica de la tarjeta madre (el puerto $B2 es común).
* Una escritura de I/O hacia una localización que el firmware ha solicitado para que el chip del procesador actúe.

## Problemas

* Puesto que el código de SMM (manejador del SMI) es instalado por el firmware del sistema (BIOS), el sistema operativo y el código del SMM pueden tener expectativas sobre los ajustes del hardware que son incompatibles, por ejemplo diferentes ideas de cómo el APIC debe ser iniciado.
* Las operaciones en el SIMM toman tiempo del CPU fuera del sistema operativo, ya que el estado del CPU debe ser almacenado a la memoria (SMRAM) y cualquier caché writeback debe ser limpiado. Esto puede destruir el comportamiento de tiempo real y causar que se pierdan ticks del reloj.
* Un analizador lógico digital puede ser requerido para determinar si el SMM está ocurriendo.
* Recuperando al código del manejador del SMI para analizarlo por errores, vulnerabilidades, y secretos requiere un analizador lógico o desensamblar el firmware del sistema.
