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

Re: [Xen-devel] Checking hypercall page existence!



Add some tracing to the hypercall function in xen/arch/x86/hvm/hvm.c and see
if you are getting that far and, if so, what error path you are taking.

 -- Keir

On 3/11/08 08:49, "Jayaraman, Bhaskar" <Bhaskar.Jayaraman@xxxxxxx> wrote:

> Keir, from a dump of the hypercall page loaded by the VM, I'm able to see the
> vmcall instruction in the hypercall page; please see attached file and you'll
> find the opcode 0xc1010f00 for VMCALL instruction. In the Intel instruction
> set reference the opcode given is 0F01C1 for VMCALL and I guess that's in big
> endian notation??
> 
> I also checked with a Linux HVM 2.6.18 kernel where I printed the hypercall
> page into the kernel log and the dmesg on that VM also throws the same output
> as you see in the attached file. So I'm not sure why any hypercalls should
> return a -1 value (I hope I'm supposed to check the return value), especially
> the two that I'm invoking. I'll now try invoking other hypercalls one by one
> and see if they all fail on VxWorks.
> 
> This is the code portion that's breaking: -
> for (i = 0; i < XENFEAT_NR_SUBMAPS; i++) {
>                 fi.submap_idx = i;
>                 if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0) {
>                         break;
>                 }
> .............
> }
> 
> The xen_feature_info_t structure has NULL initialized fields and I pass it
> with the hypercall but it doesn't contain any values when the hypercall
> returns. I'm assuming that this means the hypercall fails but I'm not sure if
> the structure is supposed to conatain anything other than 0 filled values in
> it after the hypercall returns to an HVM.
> 
> Bhaskar.
> -----Original Message-----
> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> Sent: Sunday, November 02, 2008 1:44 PM
> To: Jayaraman, Bhaskar; xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [Xen-devel] Checking hypercall page existence!
> 
> Dumping the page contents and disassembling would be sensible.
> 
>  -- Keir
> 
> On 2/11/08 07:28, "Jayaraman, Bhaskar" <Bhaskar.Jayaraman@xxxxxxx> wrote:
> 
>> No Keir, VxWorks doesn't have a user, kernel context and everything runs in
>> kernel mode in it. All tasks are scheduled in Ring0 on it so I'm not entirely
>> sure why my hypercalls are failing, although I'm able to load the hypercall
>> page. I'll try invoking a few more calls and check if all the hypercalls are
>> failing. I'm hoping that if I call more hypercalls and if the hypercall page
>> hasn't even loaded properly maybe I'm missing an instruction segment
>> interrupt
>> (Invalid opcode etc) as the hypercall branch is probably going to a
>> legitimate
>> instruction address for the ones I'm calling right now.
>> On the other hand I was also thinking of dumping the whole 4k page laoded by
>> wrmsr onto the terminal and check for hypercall opcodes within it to see if
>> the page was actually loaded. If there's some other way of checking if the
>> page has loaded properly, or if you think I may have to do something else to
>> make the calls work please let me know.
>> Bhaskar.
>> ________________________________________
>> From: Keir Fraser [keir.fraser@xxxxxxxxxxxxx]
>> Sent: Saturday, November 01, 2008 4:40 AM
>> To: Jayaraman, Bhaskar; xen-devel@xxxxxxxxxxxxxxxxxxx
>> Subject: Re: [Xen-devel] Checking hypercall page existence!
>> 
>> You can only execute hypercalls from ring 0 (kernel context), not user
>> space. Is that your problem?
>> 
>>  -- Keir
>> 
>> On 1/11/08 08:15, "Jayaraman, Bhaskar" <Bhaskar.Jayaraman@xxxxxxx> wrote:
>> 
>>> Hi, I've mapped hypercall pages onto a VxWorks HVM using the CPUID and WRMSR
>>> instructions on a 32 bit pentium machine. However, when I'm trying to make a
>>> hypercall on it the hypercall on it I'm unable to succeed and it fails. I
>>> tried the HYPERVISOR_xen_version and HYPERVISOR_vm_assist hypercalls and
>>> they
>>> both are returning < 0 values.
>>> I was wondering whether there is any way in which I can verify whether the
>>> hypercall pages have actually been mapped. I could take a dump of the pages
>>> that wrmsr maps into my domain and look through it for hypercall opcodes but
>>> if there is an easier way to confirm that, like a signature in the page
>>> mapped, please let me know.
>>> Thanks.
>>> Bhaskar.
>>> 
>>> _______________________________________________
>>> 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®.