[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Question related to Single-step execution and Emulation


  • To: Grzegorz MiÅoÅ <gm281@xxxxxxxxx>
  • From: Abhinav Srivastava <abhinavs_iitkgp@xxxxxxxxxxx>
  • Date: Tue, 24 Jun 2008 23:12:47 +0530 (IST)
  • Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 24 Jun 2008 10:43:15 -0700
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.co.in; h=Received:X-Mailer:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=Jtg1lbjPFBtMlVNZk6a0EvQEiXtgumVW74e1HGP4xQHNIfHiuwtk5LoQd4yDDgZNsIGHElCQ4/9yndQnGkm8Prd0VZxWh5tx2aK4tm0ZKJnsTmEM21duD62xzxY39oEtgxgBthppDqsu0+fgEJiEn7JQBoQNfxU5WtepRUXcOEA=;
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi Grzegorz,

I am working with HVM domain. Also, I forgot to mention in my previous email 
that I am setting debug register DR0 using set_debugreg with the value of next 
instruction so that I could trap on that. The way I am setting debug register 
with the next instruction value is 

next-eip = regs->eip + __get_instruction_length().

Still, I am not seeing it working.

Thanks,
Abhinav

--- On Tue, 24/6/08, Grzegorz MiÅoÅ <gm281@xxxxxxxxx> wrote:

> From: Grzegorz MiÅoÅ <gm281@xxxxxxxxx>
> Subject: Re: [Xen-devel] Question related to Single-step execution and 
> Emulation
> To: abhinavs_iitkgp@xxxxxxxxxxx
> Cc: "xen-devel" <xen-devel@xxxxxxxxxxxxxxxxxxx>
> Date: Tuesday, 24 June, 2008, 2:51 PM
> Are you working with an HVM or PV domain?
> Gr(z)egor(z)
> 
> >
> > Hi all,
> >
> >
> > I am trying to perform single-stepping and instruction
> emulation both in Xen-3.2.1. I am using the following
> approach:
> >
> > First, I mark a guest page "not present"
> inside the shadow page table so that I could intercept any
> operation that involves this page. When the guest tries to
> access that page, it faults and control goes to Xen
> (sh_page_fault function). There, I emulate that operation
> and return the control to guest to execute next
> instruction. I could get my first part working.
> >
> > In the second part after emulating the instruction
> inside Xen, I want to perform single-step execution from
> next instruction onwards so that I could monitor further
> execution of guest from that point.
> >
> > To achieve that I did following: After emulating an
> instruction inside Xen and before sending the control back
> to guest OS, I set the EFLAGS's trap bit set by doing
> following operation:
> >
> > regs->eflag |= X86_EFLAGS_TF
> >
> > And return the control from sh_page_fault function by
> saying "return EFAULT_FIXED".
> >
> > My understanding is that with this flag set when guest
> completes the execution of the next instruction, it traps to
> Xen with exit reason TRAP_debug and do_debug handler should
> be invoked inside x86/traps.c. From there, again I set
> X86_EFLAGS_TF flag to get guest trapped for next
> instruction and so on. When i want it to be end I will set
> X86_EFLAGS_RF flag.
> >
> > However, when I perform above-mentioned procedure I
> get to see a message "Trace/breakpoint trap" in
> my guest OS only once and my do_debug or
> (debugger_trap_entry method with vector = Trap_debug) does
> not get invoked at all inside Xen. Since trap is not coming
> into Xen, I am not able to get the control after execution
> of instructions.
> >
> > It seems like with my above-described method, I am
> injecting TRAP_debug exception for the instruction that I
> emulate inside the Xen. And, eflag is not set in the
> context of next instruction that will be executed inside
> the guest, which should trap with debug exception.
> 
> >
> >
> > It would be great if someone could explain me what i
> am doing wrong here and if yes what would be the right
> approach to perform single-step execution in Xen.
> >
> >
> > Thanks in advance.
> >
> > Regards,
> > Abhinav
> >
> >
> >
> >      Explore your hobbies and interests. Go to
> http://in.promos.yahoo.com/groups/
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> >


      Unlimited freedom, unlimited storage. Get it now, on 
http://help.yahoo.com/l/in/yahoo/mail/yahoomail/tools/tools-08.html/

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.