]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xen/pv-on-hvm kexec: add quirk for Xen 3.4 and shutdown watches.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 10 Oct 2012 17:23:36 +0000 (13:23 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 4 Dec 2012 17:44:35 +0000 (12:44 -0500)
commite6bf6fcc544c210214702b0f90eed727a9a65289
treee1bb92d8dbd48d2681ed3dbd4dc7942a54ea38e7
parent221ae74662f9b243b69459d648886812a6eb75fe
xen/pv-on-hvm kexec: add quirk for Xen 3.4 and shutdown watches.

The commit 254d1a3f02ebc10ccc6e4903394d8d3f484f715e, titled
"xen/pv-on-hvm kexec: shutdown watches from old kernel" assumes that the
XenBus backend can deal with reading of values from:
 "control/platform-feature-xs_reset_watches":

    ... a patch for xenstored is required so that it
    accepts the XS_RESET_WATCHES request from a client (see changeset
    23839:42a45baf037d in xen-unstable.hg). Without the patch for xenstored
    the registration of watches will fail and some features of a PVonHVM
    guest are not available. The guest is still able to boot, but repeated
    kexec boots will fail."

Sadly this is not true when using a Xen 3.4 hypervisor and booting a PVHVM
guest. We end up hanging at:

  err = xenbus_scanf(XBT_NIL, "control",
                        "platform-feature-xs_reset_watches", "%d", &supported);

This can easily be seen with guests hanging at xenbus_init:

NX (Execute Disable) protection: active
SMBIOS 2.4 present.
DMI: Xen HVM domU, BIOS 3.4.0 05/13/2011
Hypervisor detected: Xen HVM
Xen version 3.4.
Xen Platform PCI: I/O protocol version 1
... snip ..
calling  xenbus_init+0x0/0x27e @ 1

Reverting the commit or using the attached patch fixes the issue. This fix
checks whether the hypervisor is older than 4.0 and if so does not try to
perform the read.

Fixes-Oracle-Bug: 14708233
CC: stable@vger.kernel.org
Acked-by: Olaf Hering <olaf@aepfle.de>
[v2: Added a comment in the source code]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
(cherry picked from commit cb6b6df111e46b9d0f79eb971575fd50555f43f4)
drivers/xen/xenbus/xenbus_xs.c