All of lore.kernel.org
 help / color / mirror / Atom feed
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?

  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.