• Eugene Korenevsky's avatar
    KVM: nVMX: VMX instructions: add checks for #GP/#SS exceptions · f9eb4af6
    Eugene Korenevsky authored
    According to Intel SDM several checks must be applied for memory operands
    of VMX instructions.
    
    Long mode: #GP(0) or #SS(0) depending on the segment must be thrown
    if the memory address is in a non-canonical form.
    
    Protected mode, checks in chronological order:
    - The segment type must be checked with access type (read or write) taken
    into account.
    	For write access: #GP(0) must be generated if the destination operand
    		is located in a read-only data segment or any code segment.
    	For read access: #GP(0) must be generated if if the source operand is
    		located in an execute-only code segment.
    - Usability of the segment must be checked. #GP(0) or #SS(0) depending on the
    	segment must be thrown if the segment is unusable.
    - Limit check. #GP(0) or #SS(0) depending on the segment must be
    	thrown if the memory operand effective address is outside the segment
    	limit.
    Signed-off-by: default avatarEugene Korenevsky <ekorenevsky@gmail.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    f9eb4af6
vmx.c 296 KB