summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2011-12-08 17:41:24 +1100
committerEric Blake <eblake@redhat.com>2011-12-09 13:03:33 -0700
commite1636f47ae2f739d58362c4d197a87b9206f3af9 (patch)
tree4c2fba8f451e6a9b110ea596b882fd31e5478a39
parentdad3c2090d865d754f8f3690541f47ec7ff14fe4 (diff)
downloadlibvirt-e1636f47ae2f739d58362c4d197a87b9206f3af9.tar.gz
qemu: Use spapr-vscsi on pseries machine type
On the PPC64 pseries machine type we need to use the spapr-vscsi device rather than an lsi. Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
-rw-r--r--AUTHORS1
-rw-r--r--src/qemu/qemu_command.c14
-rw-r--r--src/qemu/qemu_command.h3
-rw-r--r--src/qemu/qemu_hotplug.c2
4 files changed, 14 insertions, 6 deletions
diff --git a/AUTHORS b/AUTHORS
index 9ea1efdc5a..fb26300307 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -211,6 +211,7 @@ Patches have also been contributed by:
Lorin Hochstein <lorin@isi.edu>
Christian Franke <nobody@nowhere.ws>
Prerna Saxena <prerna@linux.vnet.ibm.com>
+ Michael Ellerman <michael@ellerman.id.au>
[....send patches to get your name here....]
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 97d2463e91..cc8dc9b354 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -2117,7 +2117,8 @@ qemuBuildUSBControllerDevStr(virDomainControllerDefPtr def,
}
char *
-qemuBuildControllerDevStr(virDomainControllerDefPtr def,
+qemuBuildControllerDevStr(virDomainDefPtr domainDef,
+ virDomainControllerDefPtr def,
virBitmapPtr qemuCaps,
int *nusbcontroller)
{
@@ -2125,7 +2126,12 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def,
switch (def->type) {
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
- virBufferAddLit(&buf, "lsi");
+ if (STREQ(domainDef->os.arch, "ppc64") &&
+ STREQ(domainDef->os.machine, "pseries")) {
+ virBufferAddLit(&buf, "spapr-vscsi");
+ } else {
+ virBufferAddLit(&buf, "lsi");
+ }
virBufferAsprintf(&buf, ",id=scsi%d", def->idx);
break;
@@ -4039,7 +4045,7 @@ qemuBuildCommandLine(virConnectPtr conn,
char *devstr;
virCommandAddArg(cmd, "-device");
- if (!(devstr = qemuBuildControllerDevStr(cont, qemuCaps, NULL)))
+ if (!(devstr = qemuBuildControllerDevStr(def, cont, qemuCaps, NULL)))
goto error;
virCommandAddArg(cmd, devstr);
@@ -4058,7 +4064,7 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, "-device");
char *devstr;
- if (!(devstr = qemuBuildControllerDevStr(def->controllers[i], qemuCaps,
+ if (!(devstr = qemuBuildControllerDevStr(def, def->controllers[i], qemuCaps,
&usbcontroller)))
goto error;
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index 1fe039415f..3978b2b361 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -95,7 +95,8 @@ char * qemuBuildDriveDevStr(virDomainDiskDefPtr disk,
char * qemuBuildFSDevStr(virDomainFSDefPtr fs,
virBitmapPtr qemuCaps);
/* Current, best practice */
-char * qemuBuildControllerDevStr(virDomainControllerDefPtr def,
+char * qemuBuildControllerDevStr(virDomainDefPtr domainDef,
+ virDomainControllerDefPtr def,
virBitmapPtr qemuCaps,
int *nusbcontroller);
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 96c00701cd..eabfeaa760 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -329,7 +329,7 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
goto cleanup;
}
- if (!(devstr = qemuBuildControllerDevStr(controller, priv->qemuCaps, NULL))) {
+ if (!(devstr = qemuBuildControllerDevStr(vm->def, controller, priv->qemuCaps, NULL))) {
goto cleanup;
}
}