- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've made a very simple hypervisor. It works at one CPU, at base of Windows7 x64 and has no usefull functionality.
I can not solve two big problem:
1) If I run it at one CPU, I've got a tripple fault after some success VM exits. But if i set "int 3" at begin of non-root code after vmlaunch - host OS works almost very well.
2) If I try to repeat starting VMM at every CPU - I'v got a freezing and then random fatal error.
I suggest, I've done something wrong around interrupt tuning and has corrupt interrupt handling on the host
At startup I initialize VMCS member:
__vmx_vmwrite( VMCS_CONTROL_ENTRY_INTERRUPT_INFO, 0 );
__vmx_vmwrite( VMCS_CONTROL_ENTRY_EXCEPTION_ERROR, 0 );
__vmx_vmwrite( VMCS_CONTROL_ENTRY_INSTRUCTION_LENGTH, 0 );
__vmx_vmwrite( VMCS_GUEST_INTERRUPT_INFO, 0 );
__vmx_vmwrite( VMCS_GUEST_ACTIVITY_STATE, 0 );
I try to sratup hypervisor from working thread, IPI routine, DPC routine - the result is the same
What can be wrong?
I can not solve two big problem:
1) If I run it at one CPU, I've got a tripple fault after some success VM exits. But if i set "int 3" at begin of non-root code after vmlaunch - host OS works almost very well.
2) If I try to repeat starting VMM at every CPU - I'v got a freezing and then random fatal error.
I suggest, I've done something wrong around interrupt tuning and has corrupt interrupt handling on the host
At startup I initialize VMCS member:
__vmx_vmwrite( VMCS_CONTROL_ENTRY_INTERRUPT_INFO, 0 );
__vmx_vmwrite( VMCS_CONTROL_ENTRY_EXCEPTION_ERROR, 0 );
__vmx_vmwrite( VMCS_CONTROL_ENTRY_INSTRUCTION_LENGTH, 0 );
__vmx_vmwrite( VMCS_GUEST_INTERRUPT_INFO, 0 );
__vmx_vmwrite( VMCS_GUEST_ACTIVITY_STATE, 0 );
I try to sratup hypervisor from working thread, IPI routine, DPC routine - the result is the same
What can be wrong?
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Solved
There was a bug in code in host selectors limit's initialization - I did not extend limit due "Granularity" bit in selector attributes
There was a bug in code in host selectors limit's initialization - I did not extend limit due "Granularity" bit in selector attributes

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page