From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel List <xen-devel@lists.xen.org>,
Jan Beulich <JBeulich@suse.com>
Cc: Tim Deegan <tim@xen.org>, Ian Campbell <Ian.Campbell@citrix.com>
Subject: Xen-4.5 HVMOP ABI issues
Date: Fri, 28 Nov 2014 11:36:38 +0000 [thread overview]
Message-ID: <54785E46.4080107@citrix.com> (raw)
Hi,
I have finally worked out why XenServer is having issues with its legacy
windows drivers and Xen-4.5.
XenServer needs to support hvm ops with an indicies of 0x102 and 0x103
to prevent our legacy windows drivers from BSODing on boot. (These
problems will disappear when we can drop Windows XP/Server 2k3 support,
but that time is not now.)
The root cause of the breakage is c/s e8b87b57b "x86/HVM: fix preemption
handling in do_hvm_op() (try 2)", and in particular the HVMOP_op_mask,
which turns the above hypercalls into HVMOP_set_{pci_intx,isa_irq}_level
hypercalls.
>From my point of view, I can work around this with the knowledge that
HVMOP_set_{pci_intx,isa_irq}_level hypercalls are not eligible for
pre-emption.
However, it occurs to me that HVMOP_op_mask absolutely must live in the
public header files, as it is guest visible, and forms part of the ABI.
Consider a userspace task which falls into a continuation, is preempted
and paused by the guest kernel, the entire VM migrated, and the task
unpaused later. If HVMOP_op_mask has changed in that time, the
continuation will become erroneous.
In particular, all hypercall continuation strategies we use *must* be
forward compatible when moving to newer versions of Xen, because Xen
cannot possibly guarantee that a continuation which starts will finish
on the same hypervisor.
~Andrew
next reply other threads:[~2014-11-28 11:36 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-28 11:36 Andrew Cooper [this message]
2014-11-28 13:07 ` Xen-4.5 HVMOP ABI issues Jan Beulich
2014-11-28 13:11 ` Ian Campbell
2014-11-28 13:55 ` Andrew Cooper
2014-11-28 15:18 ` Jan Beulich
2014-11-28 15:46 ` Andrew Cooper
2014-12-04 13:49 ` Jan Beulich
2014-12-04 14:28 ` Andrew Cooper
2014-12-04 14:55 ` Jan Beulich
2014-12-04 15:46 ` Andrew Cooper
2014-12-04 16:11 ` Jan Beulich
2014-12-04 16:45 ` Andrew Cooper
2014-12-04 15:49 ` Tim Deegan
2014-12-05 2:19 ` Konrad Rzeszutek Wilk
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=54785E46.4080107@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=JBeulich@suse.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.org \
/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.