On 07/31/2013 10:14 PM, Cole Robinson wrote:
Preferably what we'd do is not add any USB controller by
default,
but that goes against how the QEMU driver has historically acted for
other architectures, so let's be consistent.
---
src/conf/domain_conf.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index e3aec69..2308580 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8801,6 +8801,16 @@ virDomainVideoDefaultRAM(virDomainDefPtr def,
}
}
+static int
+virDomainDefaultUSBControllerModel(virDomainDefPtr def)
+{
+ /* Not entirely true, some ARM boards actually can support USB,
+ * and even versatilepb supports the pci-ohci
+ */
+ if (def->os.arch == VIR_ARCH_ARMV7L)
+ return VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE;
+ return -1;
+}
We've been trying to put arch-specific stuff like this in the post-parse
callbacks that are defined in the hypervisors (e.g.
qemuDomainDefPostParse(), qemuDomainDeviceDefPostParse(), and bits in
qemu_command.c) rather than in the parser itself.
int
virDomainVideoDefaultType(virDomainDefPtr def)
@@ -11720,9 +11730,13 @@ virDomainDefParseXML(xmlDocPtr xml,
if (def->virtType == VIR_DOMAIN_VIRT_QEMU ||
def->virtType == VIR_DOMAIN_VIRT_KQEMU ||
- def->virtType == VIR_DOMAIN_VIRT_KVM)
- if (virDomainDefMaybeAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_USB, 0, -1)
< 0)
I'm thinking that if this needs to be different for different arches,
then it shouldn't be done here, it should be done in the hypervisor's
post-parse callback.
+ def->virtType == VIR_DOMAIN_VIRT_KVM) {
+ if (virDomainDefMaybeAddController(def,
+ VIR_DOMAIN_CONTROLLER_TYPE_USB,
+ 0,
+ virDomainDefaultUSBControllerModel(def)) < 0)
goto error;
+ }
/* analysis of the resource leases */
if ((n = virXPathNodeSet("./devices/lease", ctxt, &nodes)) < 0) {