提交 e1636f47 编写于 作者: M Michael Ellerman 提交者: Eric Blake

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: NMichael Ellerman <michael@ellerman.id.au>
上级 dad3c209
...@@ -211,6 +211,7 @@ Patches have also been contributed by: ...@@ -211,6 +211,7 @@ Patches have also been contributed by:
Lorin Hochstein <lorin@isi.edu> Lorin Hochstein <lorin@isi.edu>
Christian Franke <nobody@nowhere.ws> Christian Franke <nobody@nowhere.ws>
Prerna Saxena <prerna@linux.vnet.ibm.com> Prerna Saxena <prerna@linux.vnet.ibm.com>
Michael Ellerman <michael@ellerman.id.au>
[....send patches to get your name here....] [....send patches to get your name here....]
......
...@@ -2117,7 +2117,8 @@ qemuBuildUSBControllerDevStr(virDomainControllerDefPtr def, ...@@ -2117,7 +2117,8 @@ qemuBuildUSBControllerDevStr(virDomainControllerDefPtr def,
} }
char * char *
qemuBuildControllerDevStr(virDomainControllerDefPtr def, qemuBuildControllerDevStr(virDomainDefPtr domainDef,
virDomainControllerDefPtr def,
virBitmapPtr qemuCaps, virBitmapPtr qemuCaps,
int *nusbcontroller) int *nusbcontroller)
{ {
...@@ -2125,7 +2126,12 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def, ...@@ -2125,7 +2126,12 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def,
switch (def->type) { switch (def->type) {
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: 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); virBufferAsprintf(&buf, ",id=scsi%d", def->idx);
break; break;
...@@ -4039,7 +4045,7 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -4039,7 +4045,7 @@ qemuBuildCommandLine(virConnectPtr conn,
char *devstr; char *devstr;
virCommandAddArg(cmd, "-device"); virCommandAddArg(cmd, "-device");
if (!(devstr = qemuBuildControllerDevStr(cont, qemuCaps, NULL))) if (!(devstr = qemuBuildControllerDevStr(def, cont, qemuCaps, NULL)))
goto error; goto error;
virCommandAddArg(cmd, devstr); virCommandAddArg(cmd, devstr);
...@@ -4058,7 +4064,7 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -4058,7 +4064,7 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, "-device"); virCommandAddArg(cmd, "-device");
char *devstr; char *devstr;
if (!(devstr = qemuBuildControllerDevStr(def->controllers[i], qemuCaps, if (!(devstr = qemuBuildControllerDevStr(def, def->controllers[i], qemuCaps,
&usbcontroller))) &usbcontroller)))
goto error; goto error;
......
...@@ -95,7 +95,8 @@ char * qemuBuildDriveDevStr(virDomainDiskDefPtr disk, ...@@ -95,7 +95,8 @@ char * qemuBuildDriveDevStr(virDomainDiskDefPtr disk,
char * qemuBuildFSDevStr(virDomainFSDefPtr fs, char * qemuBuildFSDevStr(virDomainFSDefPtr fs,
virBitmapPtr qemuCaps); virBitmapPtr qemuCaps);
/* Current, best practice */ /* Current, best practice */
char * qemuBuildControllerDevStr(virDomainControllerDefPtr def, char * qemuBuildControllerDevStr(virDomainDefPtr domainDef,
virDomainControllerDefPtr def,
virBitmapPtr qemuCaps, virBitmapPtr qemuCaps,
int *nusbcontroller); int *nusbcontroller);
......
...@@ -329,7 +329,7 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver, ...@@ -329,7 +329,7 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
goto cleanup; goto cleanup;
} }
if (!(devstr = qemuBuildControllerDevStr(controller, priv->qemuCaps, NULL))) { if (!(devstr = qemuBuildControllerDevStr(vm->def, controller, priv->qemuCaps, NULL))) {
goto cleanup; goto cleanup;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册