From: Keir Fraser <keir@xen.org>
To: Daniel Castro <evil.dani@gmail.com>, xen-devel@lists.xensource.com
Cc: Ian Campbell <Ian.Campbell@eu.citrix.com>
Subject: Re: hvm crash on hypercall event channel
Date: Tue, 10 Apr 2012 13:09:31 +0100 [thread overview]
Message-ID: <CBA9E18B.3D835%keir@xen.org> (raw)
In-Reply-To: <CAP2B85-gvjJ4qbP2Lyz6qEtOb2Gzs6F_EMVHkD5K73KeFHJV1A@mail.gmail.com>
On 10/04/2012 12:30, "Daniel Castro" <evil.dani@gmail.com> wrote:
> Hello All,
>
> I am writing the PV-Drivers for Seabios.
>
> When I put a request on the front ring and issue the hypercall to
> notify, the hvm guest crashes.
>
> Here is the dmesg output:
>
> (XEN) realmode.c:116:d10 Failed to emulate insn.
> (XEN) realmode.c:166:d10 Real-mode emulation failed @ f000:00001c4b:
> 0f aa ba b2 00 ec
Looks like instruction RSM (return from SMM mode). Seems unlikely!
However, even if you are trying to run VMCALL (opcode 0F 01 C1) from
realmode it may not work as we emulate real mode for older Intel CPUs, and
our emulator does not include the vmcall instruction. Also the hypercall
stub code we provide to guests is only correct for 32-bit and 64-bit modes.
You can't legitimately use the hypercall stubs from real mode, vm86 mode, or
16-bit protected mode.
Could you just do the hypercalls from 32-bit mode? Our old rombios had a
32-bit code area for stuff like this, quite probably seabios has similar. Or
perhaps if not it could gain this functionality. Hypercalls from 16-bit mode
are not something we care to add support for, I think.
-- Keir
> (XEN) domain_crash called from realmode.c:167
> (XEN) Domain 10 (vcpu#0) crashed on cpu#1:
> (XEN) ----[ Xen-4.2-unstable x86_64 debug=y Not tainted ]----
> (XEN) CPU: 1
> (XEN) RIP: f000:[<0000000000001c4b>]
> (XEN) RFLAGS: 0000000000000097 CONTEXT: hvm guest
> (XEN) rax: 00000000000a0000 rbx: 000000000003fef8 rcx: 0000000000000320
> (XEN) rdx: 00000000000000b3 rsi: 00000000000fd600 rdi: 0000000000000340
> (XEN) rbp: 000000000009a040 rsp: 0000000000000308 r8: 0000000000000000
> (XEN) r9: 0000000000000000 r10: 0000000000000000 r11: 0000000000000000
> (XEN) r12: 0000000000000000 r13: 0000000000000000 r14: 0000000000000000
> (XEN) r15: 0000000000000000 cr0: 0000000000000010 cr4: 0000000000000000
> (XEN) cr3: 0000000000800000 cr2: 0000000000000000
> (XEN) ds: 9940 es: 9940 fs: 0000 gs: 0000 ss: 9940 cs: f000
>
> Here is the code for issue the hypercall:
> dprintf(1,"Start notify procedure\n");
> evtchn_send_t send;
> send.port = GET_GLOBALFLAT(bi->port);
> dprintf(1,"In notify before hypercall port is %d = %d",send.port);
> //hypercall_event_channel_op(EVTCHNOP_send, &send);
> dprintf(1,"read operation notify res %d\n",
> hypercall_event_channel_op(EVTCHNOP_send, &send));
> Nothing out of the ordinary. Except that the hypercall is issued under
> 16bit, It works under 32bit.
>
> Any ideas what could be wrong?
next prev parent reply other threads:[~2012-04-10 12:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-10 11:30 hvm crash on hypercall event channel Daniel Castro
2012-04-10 12:09 ` Keir Fraser [this message]
2012-04-10 12:13 ` Tim Deegan
2012-04-11 12:02 ` Daniel Castro
2012-04-11 12:06 ` Ian Campbell
2012-04-11 12:24 ` Daniel Castro
2012-04-11 12:44 ` Keir Fraser
2012-04-12 7:22 ` Daniel Castro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CBA9E18B.3D835%keir@xen.org \
--to=keir@xen.org \
--cc=Ian.Campbell@eu.citrix.com \
--cc=evil.dani@gmail.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.