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

Re: [Xen-devel] VM System Calls



Hello

I had to stay quiet for a few weeks to work on another project. I have
a few days ahead, and I was looking at that again.

I found some doc explaining the role of the different registers, and
understood how to get the info i wanted in them.

However, even if i understood how to get the PID of the process, i
do not manage to compile Xen. I'm retrieving the value in the ESP
pointer, i do the AND with the mask to get the address of the
thread_info structure that represents the process. Then i wanna copy
this structure in a variable and extract some more info. But the
thread_info structure is only defined in the IA64 aprt of the code, and
if i add the definition from the kernel, it give me an error at
building, telling me that it is declared into a parameter list, and
thus scope limited.

Any idea ?

Thanks
Fred

Le Fri, 28 Nov 2008 12:05:21 +0000,
"George Dunlap" <George.Dunlap@xxxxxxxxxxxxx> a Ãcrit :

> It sounds like to start with, you should probably look into xentrace:
> 
> * Add a new trace record type to xen/include/public/trace.h
> * Create a struct, up to 28 bytes, and fill it with the information
> you want; then call trace_var().
> * In dom0, call xentrace -e [hex address of record type]
> * You can use the xentrace_formats to parse the binary file, or write
> your own parser; or, wait until I release my xentrace analysis tool
> (should be within a week hopefully)
> 
> Once you have the basic stuff going, you can think about writing your
> own hypervisor-to-domU data path if you don't want to use xentrace.
> 
> Peace,
>  -George
> 
> On Fri, Nov 28, 2008 at 11:34 AM, Frederic Beck
> <frederic.beck@xxxxxxxx> wrote:
> > hello
> >
> > thanks ! Now i see them. I'll be able to begin working a little bit
> > more, and understand how the traps work with some printing :)
> >
> > I'll look also to find a way to log information into a file in
> > order to be able to analyze the output.
> >
> > I may recontact you in case of trouble (in the worst case will be
> > beginning of next year, i may have to stop working on that in order
> > to switch a different project that needs work done fast)
> >
> > Thanks a lot
> > Fred
> >
> > Le Fri, 28 Nov 2008 11:19:43 +0000,
> > "George Dunlap" <dunlapg@xxxxxxxxx> a Ãcrit :
> >
> >> Have you tried "xm dmesg"?
> >>
> >>  -George
> >>
> >> On Thu, Nov 27, 2008 at 4:19 PM, Frederic Beck
> >> <frederic.beck@xxxxxxxx> wrote:
> >> > Hello
> >> >
> >> > I commented out the lines you told me, compiled the hypervisor,
> >> > and i'm booting it with my 2.6.26 kernel. It is working fine, my
> >> > 2 VMs (one Linux and one XP) are working fine.
> >> >
> >> > I was trying to check the execution by printing out some debug
> >> > info. I wanted first to log the info in a specific file, but i
> >> > had troubles when compiling with redefinition troubles. I tried
> >> > sysloging and got the same troubles.
> >> >
> >> > I finally decided to use the kernel logging mechanisms. I put
> >> > several printk and gdprintk in traps.c:trace_pv_trap and
> >> > do_guest_trap but they are never printed out (at least i was
> >> > greping in /var/log).
> >> >
> >> > thus i tried to put some common/xmalloc.c:xfree and xmalloc. I
> >> > never see any message neither.
> >> >
> >> > Am i using bad logging mechanisms or simply looking in the wrong
> >> > output ?
> >> >
> >> > Thanks
> >> > Fred
> >> >
> >> > Le Wed, 26 Nov 2008 17:30:21 +0100,
> >> > Frederic Beck <frederic.beck@xxxxxxxx> a Ãcrit :
> >> >
> >> >> Well, stupid question in then end. the hypervisor is in
> >> >> xen/ ....
> >> >>
> >> >> I managed to compile a 3.3.0 hypervisor and make my 2.6.26
> >> >> kernel running
> >> >>
> >> >> fighting now with the tools with compiling errors, but it's
> >> >> advancing :)
> >> >>
> >> >> thanks
> >> >> Fred
> >> >>
> >> >> Le Wed, 26 Nov 2008 11:57:03 +0100,
> >> >> Frederic Beck <frederic.beck@xxxxxxxx> a Ãcrit :
> >> >>
> >> >> > Just another quick question.
> >> >> >
> >> >> > After modifying traps.c, to recompile the hypervisor, do I
> >> >> > need to recompile the whole sources with a make world ? Or is
> >> >> > it unnecessary ?
> >> >> >
> >> >> > At the moment I'm running a Debian unstable with the debian
> >> >> > packages distribution of Xen with hypervisor 3.2 and kernel
> >> >> > 2.6.26, and the 2.6.18 is not running on my computer.
> >> >> >
> >> >> > The idea would be to compile only the hypervisor, but id did
> >> >> > not found yet in the documentation how to do it. I'll keep on
> >> >> > looking, but is you have an idea it would be welcomed :)
> >> >> >
> >> >> > Thanks
> >> >> > Fred
> >> >> >
> >> >> > Le Wed, 26 Nov 2008 09:50:32 +0100,
> >> >> > Frederic Beck <frederic.beck@xxxxxxxx> a Ãcrit :
> >> >> >
> >> >> > > Hello
> >> >> > >
> >> >> > > > If you're not averse to modifying the hypervisor, you
> >> >> > > > should be able to arrange to get what you want.
> >> >> > >
> >> >> > > Not at all :) It's what i was planning to do in the first
> >> >> > > case.
> >> >> > >
> >> >> > > > For 32-bit guests, we allow the system call to trap
> >> >> > > > directly from userspace into the PV kernel.  But that's
> >> >> > > > actually an optimization; it used to be the case that if
> >> >> > > > you disable that direct-trap, then it will trap to Xen,
> >> >> > > > and Xen will forward it on to the PV kernel. This will
> >> >> > > > make guest system calls slightly more expensive, but it
> >> >> > > > will allow you to add the tracing / instrumentation you
> >> >> > > > want.
> >> >> > > >
> >> >> > > > Yes, it looks like if you comment out the following line
> >> >> > > > in xen/arch/x86/traps.c:do_set_trap_table():
> >> >> > > >        if ( cur.vector == 0x80 )
> >> >> > > >             init_int80_direct_trap(curr);
> >> >> > > >
> >> >> > > > Then all guest traps, including system call, will go
> >> >> > > > through traps.c:do_guest_trap(), which already traces the
> >> >> > > > trap number. If you want more information, you can add
> >> >> > > > more trace info there.
> >> >> > >
> >> >> > > Thanks a lot for your help, i'll give it a try. I just
> >> >> > > commented out that part, i'll recompile the hypervisor and
> >> >> > > play with it.
> >> >> > >
> >> >> > > I'll let you know how it works out.
> >> >> > >
> >> >> > > Thanks
> >> >> > > Fred
> >> >> > >
> >> >> > > _______________________________________________
> >> >> > > 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
> >> >>
> >> >> _______________________________________________
> >> >> 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
> >> >
> >
> 
> _______________________________________________
> 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


 


Rackspace

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