WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] Checking hypercall page existence!
From: "Jayaraman, Bhaskar" <Bhaskar.Jayaraman@xxxxxxx>
Date: Mon, 3 Nov 2008 14:19:59 +0530
Accept-language: en-US
Acceptlanguage: en-US
Cc:
Delivery-date: Mon, 03 Nov 2008 00:50:38 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C53311BA.1EBB6%keir.fraser@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <F4789BF54654AC44982AC0ED2DE2E64B2CAF0F1C72@xxxxxxxxxxxxxxxxx> <C53311BA.1EBB6%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AQHJO/oBlW020ErBRkCGeJaGjUvEEo7lgvI2gAF8pUeAAA5P14ABkQwg
Thread-topic: [Xen-devel] Checking hypercall page existence!
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
>
>


Attachment: Hypercall page.txt
Description: Hypercall page.txt

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel