Hi, I would like to start write some simple Intel-VT VMExit handlers in Xen - for e.g. when CPUID is executed, or some other VM Exit condition is satisfied. How can I define new VMExit conditions for a Intel-VT based HVM guest (WinXP) in Xen? and how can I write simple handlers for those conditions? What is a good place to start in the Xen (or Dom0?) code for the above requirements? Thanks a lot, Jon _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
It sounds like you''ve already got a basic understanding of how vmexits work at a high level? The main vmexit handling code is in xen/arch/x86/hvm/vmx/vmx.c:vmx_vmexit_handler(). It already has code to handle cpuid exits. So you''d just need to add code to the cpuid handling function, possibly enable CPUID vmexits (if they''re not enabled already). -George On Thu, Jul 29, 2010 at 9:45 AM, Jonathan White <jonxwhite@gmail.com> wrote:> Hi, > > I would like to start write some simple Intel-VT VMExit handlers in Xen - > for e.g. when CPUID is executed, or some other VM Exit condition is > satisfied. > How can I define new VMExit conditions for a Intel-VT based HVM guest > (WinXP) in Xen? and how can I write simple handlers for those conditions? > > What is a good place to start in the Xen (or Dom0?) code for the above > requirements? > > Thanks a lot, > Jon > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
>> I would like to start write some simple Intel-VT VMExit handlers in Xen - >> for e.g. when CPUID is executed, or some other VM Exit condition is >> satisfied. >> How can I define new VMExit conditions for a Intel-VT based HVM guest >> (WinXP) in Xen? and how can I write simple handlers for those conditions?You can''t define new VMExit conditions. For all the possible exit conditions, look at Intel''s "Intel 64 and IA-32 Architectures Software Developer''s Manual", Volume 3B. In the current (or near current) edition, you want to look at chapter 24 - VM Exits. Patrick _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
You might also want to look at 21.6 (VM Execution controls) for the tunables and Appendix 1. -dulloor On Thu, Jul 29, 2010 at 6:16 AM, Patrick Colp <pjcolp@gmail.com> wrote:>>> I would like to start write some simple Intel-VT VMExit handlers in Xen - >>> for e.g. when CPUID is executed, or some other VM Exit condition is >>> satisfied. >>> How can I define new VMExit conditions for a Intel-VT based HVM guest >>> (WinXP) in Xen? and how can I write simple handlers for those conditions? > > You can''t define new VMExit conditions. For all the possible exit > conditions, look at Intel''s "Intel 64 and IA-32 Architectures Software > Developer''s Manual", Volume 3B. In the current (or near current) > edition, you want to look at chapter 24 - VM Exits. > > > Patrick > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Thanks so much for your responses. Yes, I am familiar with the Intel manuals and VT chapters in volume 3B. My question was where to look in the Xen or dom0 code to tweak what VMExits are enabled in the VMCS of a particular HVM guest, so that VTx actually traps on those conditions and gives me an opportunity to handle them in a handler. Do I modify VMCS structure directly in Xen somewhere, or are there easier interfaces available for VMCS management? Sorry, I should have phrased my question better earlier. Thanks, Jon On 7/29/10, Dulloor <dulloor@gmail.com> wrote:> You might also want to look at 21.6 (VM Execution controls) for the tunables > and > Appendix 1. > > -dulloor > > On Thu, Jul 29, 2010 at 6:16 AM, Patrick Colp <pjcolp@gmail.com> wrote: >>>> I would like to start write some simple Intel-VT VMExit handlers in Xen >>>> - >>>> for e.g. when CPUID is executed, or some other VM Exit condition is >>>> satisfied. >>>> How can I define new VMExit conditions for a Intel-VT based HVM guest >>>> (WinXP) in Xen? and how can I write simple handlers for those >>>> conditions? >> >> You can''t define new VMExit conditions. For all the possible exit >> conditions, look at Intel''s "Intel 64 and IA-32 Architectures Software >> Developer''s Manual", Volume 3B. In the current (or near current) >> edition, you want to look at chapter 24 - VM Exits. >> >> >> Patrick >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel >> >-- Sent from my mobile device _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On 29/07/2010 16:30, "Jonathan White" <jonxwhite@gmail.com> wrote:> Thanks so much for your responses. > Yes, I am familiar with the Intel manuals and VT chapters in volume > 3B. My question was where to look in the Xen or dom0 code to tweak > what VMExits are enabled in the VMCS of a particular HVM guest, so > that VTx actually traps on those conditions and gives me an > opportunity to handle them in a handler. > Do I modify VMCS structure directly in Xen somewhere, or are there > easier interfaces available for VMCS management?The intercepts get set up for a new vcpu in xen/arch/x86/hvm/vmx/vmcs.c:construct_vmcs(). See how certain VMCS control fields are shadowed in the per-vcpu infor structure. You can also update these after a vcpu is initialised, and then write the shadow field back to the VMCS (see for example xen/arch/x86/hvm/vmx/vmx.c:vmx_save_dr() which updates VMCS field CPU_BASED_VM_EXEC_CONTROL). The vmexits when they occur are demuxed in xen/arch/x86/hvm/vmx/vmx.c:vmx_vmexit_handler(). K.> Sorry, I should have phrased my question better earlier. > > Thanks, > Jon > > > On 7/29/10, Dulloor <dulloor@gmail.com> wrote: >> You might also want to look at 21.6 (VM Execution controls) for the tunables >> and >> Appendix 1. >> >> -dulloor >> >> On Thu, Jul 29, 2010 at 6:16 AM, Patrick Colp <pjcolp@gmail.com> wrote: >>>>> I would like to start write some simple Intel-VT VMExit handlers in Xen >>>>> - >>>>> for e.g. when CPUID is executed, or some other VM Exit condition is >>>>> satisfied. >>>>> How can I define new VMExit conditions for a Intel-VT based HVM guest >>>>> (WinXP) in Xen? and how can I write simple handlers for those >>>>> conditions? >>> >>> You can''t define new VMExit conditions. For all the possible exit >>> conditions, look at Intel''s "Intel 64 and IA-32 Architectures Software >>> Developer''s Manual", Volume 3B. In the current (or near current) >>> edition, you want to look at chapter 24 - VM Exits. >>> >>> >>> Patrick >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@lists.xensource.com >>> http://lists.xensource.com/xen-devel >>> >>_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel