kvm, emulator: Rename VendorSpecific flag
Call it EmulateOnUD which is exactly what we're trying to do with vendor-specific instructions. Rename ->only_vendor_specific_insn to something shorter, while at it. Signed-off-by: Borislav Petkov <bp@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
					parent
					
						
							
								1ce19dc16c
							
						
					
				
			
			
				commit
				
					
						b51e974fcd
					
				
			
		
					 3 changed files with 9 additions and 10 deletions
				
			
		|  | @ -274,7 +274,7 @@ struct x86_emulate_ctxt { | |||
| 
 | ||||
| 	bool guest_mode; /* guest running a nested guest */ | ||||
| 	bool perm_ok; /* do not check permissions if true */ | ||||
| 	bool only_vendor_specific_insn; | ||||
| 	bool ud;	/* inject an #UD if host doesn't support insn */ | ||||
| 
 | ||||
| 	bool have_exception; | ||||
| 	struct x86_exception exception; | ||||
|  |  | |||
|  | @ -130,7 +130,7 @@ | |||
| #define Mov         (1<<20) | ||||
| /* Misc flags */ | ||||
| #define Prot        (1<<21) /* instruction generates #UD if not in prot-mode */ | ||||
| #define VendorSpecific (1<<22) /* Vendor specific instruction */ | ||||
| #define EmulateOnUD (1<<22) /* Emulate if unsupported by the host */ | ||||
| #define NoAccess    (1<<23) /* Don't access memory (lea/invlpg/verr etc) */ | ||||
| #define Op3264      (1<<24) /* Operand is 64b in long mode, 32b otherwise */ | ||||
| #define Undefined   (1<<25) /* No Such Instruction */ | ||||
|  | @ -3502,7 +3502,7 @@ static const struct opcode group7_rm1[] = { | |||
| 
 | ||||
| static const struct opcode group7_rm3[] = { | ||||
| 	DIP(SrcNone | Prot | Priv,		vmrun,		check_svme_pa), | ||||
| 	II(SrcNone  | Prot | VendorSpecific,	em_vmmcall,	vmmcall), | ||||
| 	II(SrcNone  | Prot | EmulateOnUD,	em_vmmcall,	vmmcall), | ||||
| 	DIP(SrcNone | Prot | Priv,		vmload,		check_svme_pa), | ||||
| 	DIP(SrcNone | Prot | Priv,		vmsave,		check_svme_pa), | ||||
| 	DIP(SrcNone | Prot | Priv,		stgi,		check_svme), | ||||
|  | @ -3587,7 +3587,7 @@ static const struct group_dual group7 = { { | |||
| 	II(SrcMem16 | Mov | Priv,		em_lmsw, lmsw), | ||||
| 	II(SrcMem | ByteOp | Priv | NoAccess,	em_invlpg, invlpg), | ||||
| }, { | ||||
| 	I(SrcNone | Priv | VendorSpecific,	em_vmcall), | ||||
| 	I(SrcNone | Priv | EmulateOnUD,	em_vmcall), | ||||
| 	EXT(0, group7_rm1), | ||||
| 	N, EXT(0, group7_rm3), | ||||
| 	II(SrcNone | DstMem | Mov,		em_smsw, smsw), N, | ||||
|  | @ -3810,7 +3810,7 @@ static const struct opcode opcode_table[256] = { | |||
| static const struct opcode twobyte_table[256] = { | ||||
| 	/* 0x00 - 0x0F */ | ||||
| 	G(0, group6), GD(0, &group7), N, N, | ||||
| 	N, I(ImplicitOps | VendorSpecific, em_syscall), | ||||
| 	N, I(ImplicitOps | EmulateOnUD, em_syscall), | ||||
| 	II(ImplicitOps | Priv, em_clts, clts), N, | ||||
| 	DI(ImplicitOps | Priv, invd), DI(ImplicitOps | Priv, wbinvd), N, N, | ||||
| 	N, D(ImplicitOps | ModRM), N, N, | ||||
|  | @ -3830,8 +3830,8 @@ static const struct opcode twobyte_table[256] = { | |||
| 	IIP(ImplicitOps, em_rdtsc, rdtsc, check_rdtsc), | ||||
| 	II(ImplicitOps | Priv, em_rdmsr, rdmsr), | ||||
| 	IIP(ImplicitOps, em_rdpmc, rdpmc, check_rdpmc), | ||||
| 	I(ImplicitOps | VendorSpecific, em_sysenter), | ||||
| 	I(ImplicitOps | Priv | VendorSpecific, em_sysexit), | ||||
| 	I(ImplicitOps | EmulateOnUD, em_sysenter), | ||||
| 	I(ImplicitOps | Priv | EmulateOnUD, em_sysexit), | ||||
| 	N, N, | ||||
| 	N, N, N, N, N, N, N, N, | ||||
| 	/* 0x40 - 0x4F */ | ||||
|  | @ -4268,7 +4268,7 @@ done_prefixes: | |||
| 	if (ctxt->d == 0 || (ctxt->d & NotImpl)) | ||||
| 		return EMULATION_FAILED; | ||||
| 
 | ||||
| 	if (!(ctxt->d & VendorSpecific) && ctxt->only_vendor_specific_insn) | ||||
| 	if (!(ctxt->d & EmulateOnUD) && ctxt->ud) | ||||
| 		return EMULATION_FAILED; | ||||
| 
 | ||||
| 	if (mode == X86EMUL_MODE_PROT64 && (ctxt->d & Stack)) | ||||
|  |  | |||
|  | @ -5108,8 +5108,7 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, | |||
| 		ctxt->have_exception = false; | ||||
| 		ctxt->perm_ok = false; | ||||
| 
 | ||||
| 		ctxt->only_vendor_specific_insn | ||||
| 			= emulation_type & EMULTYPE_TRAP_UD; | ||||
| 		ctxt->ud = emulation_type & EMULTYPE_TRAP_UD; | ||||
| 
 | ||||
| 		r = x86_decode_insn(ctxt, insn, insn_len); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Borislav Petkov
				Borislav Petkov