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

Re: [Xen-devel] Re: HVM hypercalls



On Mon, 2011-05-23 at 14:52 +0100, veerasena reddy wrote:
> Hi,
> 
> Thanks a lot for quick reply. 
> 
> I modified my code to get physical page address and now i do not see
> error message on XEN hypervisor.
> Could you please correct if am writing proper physical address or not?
> 
> We can write the page address to hypervisor using wrmsr() but who
> should set hypercall_page which is declared as extern in hypercall.h
> on HVM? Because when i try to invoke HYPERCALL_xxxx(), it reported
> hypercall_page not declared. Do we need to enable CONFIG_XEN in HVM
> kernel in order to invoke hypercalls to hypervisor?

Which kernel are you running with?

This should all be taken care of for you in a kernel with PVHVM support
enabled.

> Could you please share any sample code if you have to get a clear
> understanding of HVM hypercalls.
> 
> {
>         char id[13];
>         unsigned int msr1;
>         unsigned long  my_hpage_phys;
>         int my_hpage_lo, my_hpage_hi;
> 
>         __asm__ __volatile__(
>                 "cpuid"
>                 : "=b" (*(int *)(&id[0])),
>                   "=d" (*(int *)(&id[8])),
>                   "=c" (*(int *)(&id[4]))
>                 : "a" (0x40000000)
>         );
>         id[12]='\0';
>         printk("CPU ID read- %s\n", id);
> 
>         /* Read MSR register */
>         __asm__ __volatile__(
>                 "cpuid"
>                 : "=b" (*(int *)(&msr1))
>                 : "a" (0x40000002)
>         );
> 
>         my_hpage_phys = __get_free_page(GFP_ATOMIC);
>         hypercall_page = virt_to_phys(my_hpage_phys);
>         printk("my_hpage_phys get_free = %lx\n", my_hpage_phys);
>         printk("hypercal_page = %p\n", hypercall_page);
> 
>         my_hpage_lo = (unsigned long)hypercall_page & 0xffffffff;
>         my_hpage_hi = (unsigned long)hypercall_page >> 32;
>         printk("my_hpage lo = %x hi = %x\n", my_hpage_lo,
> my_hpage_hi);
>         /* Write hypercall page address to MSR */
>         wrmsr(msr1, my_hpage_lo, my_hpage_hi);
> 
>         return 0;
> }
> 
> ================= output on HVM ==========
> [root@localhost src]# dmesg
> my_hypercall_page @ ffffffffa0388000
> CPU ID read- XenVMMXenVMM
> my_hpage_phys get_free = ffff880005c0b000
> hypercal_page = 0000000005c0b000
> my_hpage lo = 5c0b000 hi = 0
> ============================
> 
> Thanks & Regards,
> VSR.
> 
> On Mon, May 23, 2011 at 1:52 PM, Ian Campbell
> <Ian.Campbell@xxxxxxxxxx> wrote:
>         On Mon, 2011-05-23 at 08:48 +0100, veeruyours wrote:
>         > Hi,
>         >
>         > I recently started working on XEN, and I am looking for ways
>         to invoke
>         > hypercalls from HVM.
>         > I followed your instructions and succeeded in reading MSR
>         register.
>         > But when i attempt to write the physical address of a 4K
>         page from my HVM
>         > guest (2.6.30 kernel), i observed the XEN hypervisor
>         reporting it as bad
>         > GMFN as follows.
>         >
>         > [root@f13 ~]# xm dmesg -c
>         > (XEN) traps.c:664:d17 Bad GMFN ffff88001e925 (MFN
>         ffffffffffffffff) to MSR
>         > 40000000
>         
>         
>         That supposed GMFN (fff88001e925) looks an awful lot like a
>         virtual
>         address and not a physical one to me, unless your guest really
>         has >4TB
>         of RAM assigned...
>         
>         
>         >
>         > Could you please help me in understanding what went wrong in
>         my
>         > implementation.
>         >
>         > I am running XEN 4.0.1 on AMD 64bit machine with svm support
>         and the dom0
>         > kernel running 2.6.32.39.
>         >
>         > The
>         > Thanks & Regards,
>         > VSR.
>         >
>         >
>         > --
>         > View this message in context:
>         http://xen.1045712.n5.nabble.com/HVM-hypercalls-tp2541346p4418332.html
>         > Sent from the Xen - Dev mailing list archive at Nabble.com.
>         >
>         > _______________________________________________
>         > 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®.