[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Question related to Single-step execution and Emulation
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 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |