blkfront: do not create a PV cdrom device if xen_hvm_guest
It is not possible to unplug emulated cdrom devices, and PV cdroms don't handle media insert, eject and stream, so we are better off disabling PV cdroms when running as a Xen HVM guest. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
This commit is contained in:
parent
c7f52cdc2f
commit
b98a409b80
@ -738,8 +738,11 @@ static int blkfront_probe(struct xenbus_device *dev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xen_hvm_domain()) {
|
||||||
|
char *type;
|
||||||
|
int len;
|
||||||
/* no unplug has been done: do not hook devices != xen vbds */
|
/* no unplug has been done: do not hook devices != xen vbds */
|
||||||
if (xen_hvm_domain() && (xen_platform_pci_unplug & XEN_UNPLUG_IGNORE)) {
|
if (xen_platform_pci_unplug & XEN_UNPLUG_IGNORE) {
|
||||||
int major;
|
int major;
|
||||||
|
|
||||||
if (!VDEV_IS_EXTENDED(vdevice))
|
if (!VDEV_IS_EXTENDED(vdevice))
|
||||||
@ -754,6 +757,16 @@ static int blkfront_probe(struct xenbus_device *dev,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* do not create a PV cdrom device if we are an HVM guest */
|
||||||
|
type = xenbus_read(XBT_NIL, dev->nodename, "device-type", &len);
|
||||||
|
if (IS_ERR(type))
|
||||||
|
return -ENODEV;
|
||||||
|
if (strncmp(type, "cdrom", 5) == 0) {
|
||||||
|
kfree(type);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
kfree(type);
|
||||||
|
}
|
||||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||||
if (!info) {
|
if (!info) {
|
||||||
xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure");
|
xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure");
|
||||||
|
Loading…
Reference in New Issue
Block a user