[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] New Hypercall Declaration
And furthermore, do_jeet() needs to return a long, not void. -- Keir On 07/10/2010 19:07, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> wrote: > The hypercall_table and hypercall_args_table are initialized sequences of > quads and bytes. Even though you have put 56 in the comment, you are > initializing the table entry immediately following the 48th entry, which would > be hypercall 49. You need to fill the entries from 49 to 55 in both tables > with the appropriate values. (The assembler syntax for these tables is weird, > e.g. endr and rept, and I am not an expert on it.) > > > From: Nimgaonkar, Satyajeet [mailto:SatyajeetNimgaonkar@xxxxxxxxxx] > Sent: Thursday, October 07, 2010 11:37 AM > To: Dan Magenheimer; xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: RE: [Xen-devel] New Hypercall Declaration > > > Hi Dan, > I followed your instruction from the below email, but still I am > getting -1 for hypercall invocation. These are the steps I followed. > > 1. Add my hypercall in xen.h ---- #define __HYPERVISOR_jeet1 > 56 > > 2. Added it to entry.S - hypercall table ---- .quad do_mca /* 48 > */ > .quad > do_jeet1 /* 56 */ > - hypercall_args_table ---- .byte 1 /* do_mca > */ /* 48 */ > > .byte 0 /* do_jeet1 */ /* 56 */ > > 3. Then declared my hypercall in asm-x86/hypercall.h ---- void do_jeet1(void); > > 4. Then calling it in domctl.c in xen/common --- void do_jeet1(void){ > > printk ("Successfull Hypercall made to __HYPERVISOR_jeet1"); > > } > > 5. Declared a function in xc_domain.c in xen/tools to call this hypercall > > int hypercall_test(int handle){ > > int rc; > int arg=0; > //int cmd=1; > // > //int test; > /* Hypercall definitions */ > > DECLARE_HYPERCALL; > hypercall.op = __HYPERVISOR_jeet1; > rc = do_xen_hypercall(handle, &hypercall); > hypercall.arg[0] = 0; > hypercall.arg[1] = (unsigned long)&arg; > //printf ("Hypercall Details: %d\n", rc); > //xc_interface_close(handle); > return rc; > } > > 6. Then wrote a userlevel program to call function hypercall_test and invoke > my hypercall. > > #include <xenctrl.h> > #include <stdio.h> > > > > int main(){ > > printf("Attempt to invoke the hypercall: __HYPERVISOR_jeet1\n"); > int handle, rc; > > /* Acquire Hypervisor Interface Handle. > This handle goes as the first argument for the function > do_xen_hypercall() > */ > > handle = xc_interface_open(); > printf ("Acquired handle to Xen Hypervisor:%d\n",handle); > > > rc = hypercall_test(handle); > printf ("Hypercall Details: %d\n", rc); > > xc_interface_close(handle); > printf ("Hypervisor handle closed\n"); > > return 0; > > } > > > I compiled entire xen, installed it and booted into the atest compiled xen. > But still my userlevel program compiles error free but returns me a -1 error > for hypercall invocation. Can you please tell me what is that I doing wrong. > Thanks. > > Regards, > Satyajeet Nimgaonkar > > > From: Dan Magenheimer [dan.magenheimer@xxxxxxxxxx] > Sent: Thursday, September 30, 2010 4:47 PM > To: Nimgaonkar, Satyajeet; xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: RE: [Xen-devel] New Hypercall Declaration > > Do you understand that you must also change the hypervisor to recognize and do > something with your new hypercall? Your userland code may actually be working > and the hypercall may actually be resulting in an entry into the hypervisor, > but unless the hypervisor is modified to recognize the new hypercall (#56) and > do something with it, the hypervisor will generate a return value of -1 > (essentially saying ³I don¹t recognize this hypercall number²). > > If you have modified the hypervisor, please share that patch. If not, you > will need to modify at least the hypercall_table and the hypercall_args_table > in entry.S (under x86, x86_64, and x86_64/compat, or all three, depending on > the bit-ness of your hypervisor and guest) and create a do_my_hypercall() > routine somewhere. Then of course you will need to ensure that you are > properly building, installing, and booting your newly modified hypervisor. > > Printk¹s done inside the hypervisor can be viewed using ³xm dmesg² or via a > properly configured serial port. > > Use ³xm info² and look at cc_compile_date to ensure you are booting your newly > modified hypervisor. > > Hope that helps, > Dan > > > From: Nimgaonkar, Satyajeet [mailto:SatyajeetNimgaonkar@xxxxxxxxxx] > Sent: Thursday, September 30, 2010 4:03 PM > To: xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: [Xen-devel] New Hypercall Declaration > > > Hello Xen Developers, > > I am currently working on declaring a new hypercall in Xen. > For this i have declared my hypercall in xen.h - > #define __HYPERVISOR_jeet1 56 > > Then I modified the xcom_privcmd.c to accomodate my hypercall - > case __HYPERVISOR_jeet1: > printk("Successfull Hypercall made to > __HYPERVISOR_jeet1"); > > I defined the structure for the Hypercall in xc_domain.c > > int hypercall_test(int handle){ > > int rc; > > /* Hypercall definitions */ > > DECLARE_HYPERCALL; > hypercall.op = __HYPERVISOR_jeet1; > rc = do_xen_hypercall(handle, &hypercall); > hypercall.arg[0] = 0; > hypercall.arg[1] = 1; > //printf ("Hypercall Details: %d\n", rc); > //xc_interface_close(handle); > return rc; > } > > And then I am calling this Hypercall through an user level program- > > #include <xenctrl.h> > #include <stdio.h> > > > > int main(){ > > printf("Attempt to invoke the hypercall: __HYPERVISOR_jeet1\n"); > int handle, rc; > > /* Acquire Hypervisor Interface Handle. > This handle goes as the first argument for the function > do_xen_hypercall() > */ > > handle = xc_interface_open(); > printf ("Acquired handle to Xen Hypervisor:%d\n",handle); > > > rc = hypercall_test(handle); > printf ("Hypercall Details: %d\n", rc); > > xc_interface_close(handle); > > return 0; > > } > > > The program compiles properly but gives me -1 error for rc. I have posted the > same query and I got replies on it. But even after trying many things, I am > still stuck with this problem. Can anyone please tell me what I am doing wrong > here. Also please tell me where > should I view the output of printk in xen. > > Thanks in advance. > > Regards, > Satyajeet Nimgaonkar > > > _______________________________________________ > 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 |