GETSEC[SEXIT]

Exit Measured Environment

estableVMJITAOTinstruccion

Esto es una funcion hoja, no una instruccion: se invoca a traves de otra instruccion con un numero de hoja en un registro.

Descripción

La instrucción GETSEC[SEXIT] inicia una salida de un entorno medido establecido por GETSEC[SENTER]. El SEXIT hoja de GETSEC es seleccionado con EAX fijado a 5 en ejecución. Esta instrucción hoja envía un mensaje a todos los procesadores lógicos en la plataforma para indicar la salida del medio ambiente medida.

Existen restricciones impuestas por el procesador para la ejecución de la instrucción GETSEC[SEXIT]:

= 0.

pero no todavía en modo de ejecución de código autenticado.

instruction if it currently is in SMM or in VMX operation.

También se designa el BSP (procesador de arranque) definido por el bit de registro IA32_APIC_BASE.BSP (bit 8).

El incumplimiento de las condiciones anteriores da lugar al procesador señalando una violación general de la protección.

Esta instrucción inicia una secuencia para reunir a los RLP con el ILP. Luego aclara la bandera del procesador interno indicando que el procesador está operando en un ambiente medido.

En respuesta a un mensaje que indica la conclusión de la citación, todos los RLP reiniciaron la ejecución con la instrucción que debía ejecutarse en el momento en que se reconoció GETSEC[SEXIT]. Esto se aplica a todas las condiciones del procesador, con las siguientes excepciones:

La ejecución se reanudará en el estado de detención.

estado, cayendo a la siguiente instrucción.

de la instrucción de cadena en el punto que el mensaje iniciado por GETSEC[SEXIT] fue reconocido.

para el estado de SIPI después de limpiar primero la bandera del indicador del procesador de arranque (IA32_APIC_BASE.BSP) y cualquier estado SIPI pendiente. En este caso, estos RLP se inicializan a un estado arquitectónico consistente con haber tomado un reinicio suave utilizando el pin INIT#.

Antes de la terminación de la operación GETSEC[SEXIT], tanto el ILP como cualquier RLP activo desenmascaran la respuesta de las señales de eventos externos INIT#, A20M, NMI# y SMI#. Este desenmascaramiento se realiza incondicionalmente para reconocer los eventos de pin que están enmascarados después de un GETSEC[SENTER]. El estado de A20M está desenmascarado, ya que el pin A20M no es reconocido mientras el ambiente medido es activo.

En una salida exitosa del entorno medido, el ILP re-bloquea el espacio de configuración privado de chipset compatible con Intel(R) TXT. GETSEC[SEXIT] no afecta el contenido de ningún PCR.

Al completar GETSEC[SEXIT] por el ILP, la ejecución procede a la siguiente instrucción. Dado que EFLAGS y el estado de registro de depuración no son modificados por esta instrucción, una condición de trampa pendiente es libre de ser señalizado si previamente habilitado.

Funcionamiento en una Plataforma de Procesadores Uni

( El estado de la bandera interna ACMODEFLAG y SENTERFLAG persisten en el límite de instrucción )

GETSEC[SEXIT] (ILP Only):

IF (CR4.SMXE=0)
    THEN #UD;
ELSE IF (in VMX non-root operation)
    THEN VM Exit (reason="GETSEC instruction");
ELSE IF (GETSEC leaf unsupported)
    THEN #UD;
ELSE IF ((in VMX root operation) or

(CR0.PE=0) or (CPL>0) or (EFLAGS.VM=1) or (IA32_APIC_BASE.BSP=0) or (TXT chipset not present) or (SENTERFLAG=0) or (ACMODEFLAG=1) or (IN SMM=1))

          THEN #GP(0);

SignalTXTMsg(SEXIT); DO

WHILE (no SignalSEXIT message);

TXT SEXIT MSG EVENT (ILP & RLP): Máscara y evento SignalSEXIT claro; Clear MONITOR FSM; Unmask SignalsENTER event;

IF (in VMX operation)
    THEN TXT-SHUTDOWN(#IllegalEvent);

SignalTXTMsg(SEXITAck);

IF (logical processor is not ILP)
    THEN GOTO RLP_SEXIT_ROUTINE;

( ILP espera a todos los procesadores lógicos a ACK ) DO

    DONE := READ(LT.STS);
WHILE (NOT DONE);

SignalTXTMsg(SEXITContinue); SignalTXTMsg(ClosePrivate);

SENTERFLAG := 0;

Unmask SMI, INIT, A20M y NMI eventos externos de pins; END;

RLP SEXIT ROUTINE (RLPs Only): Esperar la señalSEXITContinuar el mensaje; Unmask SMI, INIT, A20M y NMI eventos externos de pins;

IF (prior execution state = HLT)
    THEN reenter HLT state;
IF (prior execution state = SENTER sleep)
    THEN
          IA32_APIC_BASE.BSP := 0;

Clear pending SIPI state; Call INIT PROCESSOR STATE; Unmask SIPI evento; GOTO WAIT-FOR-SIPI;

FI; END;

Banderas afectadas

ILP: Ninguno. RLPs: Todas las banderas son modificadas para un estado RLP. volviendo a esperar a SIPI, ninguna otra cosa.

Use of Prefixes

LOCK Causa #UD.

REP* Causa #UD (incluye REPNE/REPNZ y REP/REPE/REPZ).

Tamaño de operando Causa #UD.

No se permiten prefijos NP 66/F2/F3.

Segment anula Ignorado.

Tamaño de la dirección Ignorado.

REX Ignored.

Excepciones

Modo protegido
#UDSi CR4.SMXE = 0. Si GETSEC[SEXIT] no es reportado como apoyado por GETSEC[CAPABILITIES].
#GP(0)SiCR0.PE= 0 oCPL >0 oEFLAGS.VM1. Si entraVMXsi el procesador iniciador no es designado a través delMSRbitIA32_APIC_BASE.BSP. Si un Intel(R)TXT- no está presente el chipset. Si una partición protegida no está ya activa o el procesador ya está en modo de código autenticado. Si el procesador está enSMM.
Modo real
#UDSi CR4.SMXE = 0. Si GETSEC[SEXIT] no es reportado como apoyado por GETSEC[CAPABILITIES].
#GP(0)GETSEC[SEXIT] no es reconocido en modo de direccion real.
Modo virtual-8086
#UDSi CR4.SMXE = 0. Si GETSEC[SEXIT] no es reportado como apoyado por GETSEC[CAPABILITIES].
#GP(0)GETSEC[SEXIT] no es reconocido en modo virtual-8086.
Modo de compatibilidad
Todas las excepciones modo protegido se aplican.
Modo de 64 bits
Todas las excepciones modo protegido se aplican.

Fuentes