svn commit: r268832 - stable/9/sys/dev/xen/blkfront
Roger Pau Monné
royger at FreeBSD.org
Fri Jul 18 07:18:38 UTC 2014
Author: royger
Date: Fri Jul 18 07:18:37 2014
New Revision: 268832
URL: http://svnweb.freebsd.org/changeset/base/268832
Log:
MFC r256423:
Allow FreeBSD to be booted from CDROM media on XenServer 6.2 and prior
releases.
PR: 164630
Modified:
stable/9/sys/dev/xen/blkfront/blkfront.c
Modified: stable/9/sys/dev/xen/blkfront/blkfront.c
==============================================================================
--- stable/9/sys/dev/xen/blkfront/blkfront.c Fri Jul 18 06:58:01 2014 (r268831)
+++ stable/9/sys/dev/xen/blkfront/blkfront.c Fri Jul 18 07:18:37 2014 (r268832)
@@ -399,14 +399,44 @@ xb_dump(void *arg, void *virtual, vm_off
static int
blkfront_probe(device_t dev)
{
+#ifdef XENHVM
+ int error;
+ char *type;
+#endif
- if (!strcmp(xenbus_get_type(dev), "vbd")) {
- device_set_desc(dev, "Virtual Block Device");
- device_quiet(dev);
- return (0);
+ if (strcmp(xenbus_get_type(dev), "vbd") != 0)
+ return (ENXIO);
+
+#ifdef XENHVM
+ /*
+ * When running in an HVM domain, IDE disk emulation is
+ * disabled early in boot so that native drivers will
+ * not see emulated hardware. However, CDROM device
+ * emulation cannot be disabled.
+ *
+ * Through use of FreeBSD's vm_guest and xen_hvm_domain()
+ * APIs, we could modify the native CDROM driver to fail its
+ * probe when running under Xen. Unfortunatlely, the PV
+ * CDROM support in XenServer (up through at least version
+ * 6.2) isn't functional, so we instead rely on the emulated
+ * CDROM instance, and fail to attach the PV one here in
+ * the blkfront driver.
+ */
+ error = xs_read(XST_NIL, xenbus_get_node(dev),
+ "device-type", NULL, (void **) &type);
+ if (error)
+ return (ENXIO);
+
+ if (strncmp(type, "cdrom", 5) == 0) {
+ free(type, M_XENSTORE);
+ return (ENXIO);
}
+ free(type, M_XENSTORE);
+#endif
- return (ENXIO);
+ device_set_desc(dev, "Virtual Block Device");
+ device_quiet(dev);
+ return (0);
}
static void
More information about the svn-src-stable-9
mailing list