That is because “int $0x92” only switch the context to guest’s IDT instead of hypervisor’s IDT by default.
Xiantao
From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Srujan Kotikela
Sent: Saturday, December 03, 2011 4:52 AM
To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Ring3 Hypercalls from HVM DomU
Hi,
I have created hypercalls that can be invoked from ring-3 by setting the ring-3 gate in xen. This works fine when I invoke the hypercall from Dom0. I want to invoke the same from a HVM DomU. But I keep getting the segmentation fault when I invoke the ring3_hyperacall from HVM DomU. Any ideas?
The setting up gate is as follows:
_set_gate(idt_table+0x92, 14, 3, &hypercall);
The hypercall invoking code looks like this:
int ring3_hypercall(unsigned long va, int command)
{
int ret;
asm("int $0x92" : "=a"(ret) : "a"(40), "b"(va), "c"(command));
return ret;
}
~ SDK