@@ -291,7 +291,7 @@ typedef enum component_index_t component_index_t;
291291 */
292292#define VMCS_COMPS \
293293 /* 64-bit components */ \
294- COMP(1, 1 , W_64, VMX_IO_BITMAP_A) \
294+ COMP(0, 0 , W_64, VMX_IO_BITMAP_A) \
295295 COMP(0, 0, W_64, VMX_IO_BITMAP_B) \
296296 COMP(0, 0, W_64, VMX_MSR_BITMAP) \
297297 COMP(0, 0, W_64, VMX_EXIT_MSR_STORE_ADDRESS) \
@@ -301,7 +301,7 @@ typedef enum component_index_t component_index_t;
301301 COMP(0, 0, W_64, VMX_VAPIC_PAGE) \
302302 COMP(0, 0, W_64, VMX_APIC_ACCESS_PAGE) \
303303 COMP(0, 0, W_64, VMX_EPTP) \
304- COMP(0 , 0, W_64, VM_EXIT_INFO_GUEST_PHYSICAL_ADDRESS) \
304+ COMP(1 , 0, W_64, VM_EXIT_INFO_GUEST_PHYSICAL_ADDRESS) \
305305 COMP(0, 0, W_64, HOST_PAT) \
306306 COMP(0, 0, W_64, HOST_EFER) \
307307 COMP(0, 0, W_64, HOST_PERF_GLOBAL_CTRL) \
@@ -370,19 +370,19 @@ typedef enum component_index_t component_index_t;
370370 COMP (0 , 0 , W_32 , VMX_EXIT_MSR_LOAD_COUNT ) \
371371 COMP (0 , 0 , W_32 , VMX_ENTRY_CONTROLS ) \
372372 COMP (0 , 0 , W_32 , VMX_ENTRY_MSR_LOAD_COUNT ) \
373- COMP (0 , 0 , W_32 , VMX_ENTRY_INTERRUPT_INFO ) \
374- COMP (0 , 0 , W_32 , VMX_ENTRY_EXCEPTION_ERROR_CODE ) \
375- COMP (0 , 0 , W_32 , VMX_ENTRY_INSTRUCTION_LENGTH ) \
373+ COMP (0 , 1 , W_32 , VMX_ENTRY_INTERRUPT_INFO ) \
374+ COMP (0 , 1 , W_32 , VMX_ENTRY_EXCEPTION_ERROR_CODE ) \
375+ COMP (0 , 1 , W_32 , VMX_ENTRY_INSTRUCTION_LENGTH ) \
376376 COMP (0 , 0 , W_32 , VMX_TPR_THRESHOLD ) \
377377 COMP (0 , 0 , W_32 , VMX_CR3_TARGET_COUNT ) \
378378 COMP (0 , 0 , W_32 , VMX_PREEMPTION_TIMER ) \
379379 COMP (0 , 0 , W_32 , VMX_INSTRUCTION_ERROR_CODE ) \
380380 COMP (0 , 0 , W_32 , VM_EXIT_INFO_REASON ) \
381- COMP (0 , 0 , W_32 , VM_EXIT_INFO_INTERRUPT_INFO ) \
382- COMP (0 , 0 , W_32 , VM_EXIT_INFO_EXCEPTION_ERROR_CODE ) \
383- COMP (0 , 0 , W_32 , VM_EXIT_INFO_IDT_VECTORING ) \
381+ COMP (1 , 0 , W_32 , VM_EXIT_INFO_INTERRUPT_INFO ) \
382+ COMP (1 , 0 , W_32 , VM_EXIT_INFO_EXCEPTION_ERROR_CODE ) \
383+ COMP (1 , 0 , W_32 , VM_EXIT_INFO_IDT_VECTORING ) \
384384 COMP (0 , 0 , W_32 , VM_EXIT_INFO_IDT_VECTORING_ERROR_CODE ) \
385- COMP (0 , 0 , W_32 , VM_EXIT_INFO_INSTRUCTION_LENGTH ) \
385+ COMP (1 , 0 , W_32 , VM_EXIT_INFO_INSTRUCTION_LENGTH ) \
386386 COMP (0 , 0 , W_32 , VM_EXIT_INFO_INSTRUCTION_INFO ) \
387387 COMP (0 , 0 , W_32 , HOST_SYSENTER_CS ) \
388388 COMP (0 , 0 , W_32 , GUEST_ES_AR ) \
@@ -880,18 +880,12 @@ struct vcpu_vmx_data {
880880 uint32_t entry_exception_vector ;
881881 uint32_t entry_exception_error_code ;
882882
883- uint32_t exit_exception_error_code ;
884- interruption_info_t exit_intr_info ;
885883 interruption_info_t entry_intr_info ;
886- uint32_t exit_idt_vectoring ;
887- uint32_t exit_instr_length ;
888884 uint32_t entry_instr_length ;
889885
890886 exit_reason_t exit_reason ;
891887 exit_qualification_t exit_qualification ;
892888 interruptibility_state_t interruptibility_state ;
893-
894- uint64_t exit_gpa ;
895889};
896890
897891vmx_result_t ASMCALL asm_invept (uint type , struct invept_desc * desc );
@@ -946,11 +940,12 @@ void vmx_vmwrite(struct vcpu_t *vcpu, const char *name,
946940 static inline void vmcs_write_##name(struct vcpu_vmx_data* vcpu_vmx, \
947941 COMP_TYPE_##width value) { \
948942 vcpu_vmx->vmcs.name##_value = value; \
949- vcpu_vmx->vmcs_cache_r.name##_cache = 1; \
943+ /* vcpu_vmx->vmcs_cache_r.name##_cache = 1;*/ \
950944 vcpu_vmx -> vmcs_cache_w .name ##_dirty = 1 ; \
945+ vcpu_vmx -> vmcs_cache_w .dirty = 1 ; \
951946 }
952947
953- // Declarations
948+ // Declarations
954949#define COMP_R (cache_r , cache_w , width , name ) \
955950 COMP_R_##cache_r(width, name);
956951#define COMP_W (cache_r , cache_w , width , name ) \
@@ -970,7 +965,7 @@ VMCS_COMPS
970965#define vmcs_write (vcpu , name , value ) \
971966 vmcs_write_##name(&vcpu->vmx, value)
972967
973- void vmcs_write_pending (struct vcpu_t * vcpu );
968+ void vcpu_handle_vmcs_pending (struct vcpu_t * vcpu );
974969
975970#define VMREAD_SEG (vcpu , seg , val ) \
976971 ((val).selector = vmread(vcpu, GUEST_##seg##_SELECTOR), \
0 commit comments