mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu: add ibmvscsi controller model
KVM will be able to use a PCI SCSI controller even on POWER. Let the user specify the vSCSI controller by other means than a default. After this patch, the QEMU driver will actually look at the model and reject anything but auto, lsilogic and ibmvscsi. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
c972237ee1
commit
7b345b69f2
@ -1541,8 +1541,8 @@
|
||||
attributes <code>ports</code> and <code>vectors</code>, which
|
||||
control how many devices can be connected through the
|
||||
controller. A "scsi" controller has an optional
|
||||
attribute <code>model</code>, which is one of "auto",
|
||||
"buslogic", "lsilogic", "lsias1068", or "vmpvscsi".
|
||||
attribute <code>model</code>, which is one of "auto", "buslogic",
|
||||
"ibmvscsi", "lsilogic", "lsias1068" or "vmpvscsi".
|
||||
A "usb" controller has an optional attribute <code>model</code>,
|
||||
which is one of "piix3-uhci", "piix4-uhci", "ehci",
|
||||
"ich9-ehci1", "ich9-uhci1", "ich9-uhci2", "ich9-uhci3",
|
||||
|
@ -1081,6 +1081,7 @@
|
||||
<value>lsilogic</value>
|
||||
<value>lsisas1068</value>
|
||||
<value>vmpvscsi</value>
|
||||
<value>ibmvscsi</value>
|
||||
<value>piix3-uhci</value>
|
||||
<value>piix4-uhci</value>
|
||||
<value>ehci</value>
|
||||
|
@ -234,7 +234,8 @@ VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAS
|
||||
"buslogic",
|
||||
"lsilogic",
|
||||
"lsisas1068",
|
||||
"vmpvscsi")
|
||||
"vmpvscsi",
|
||||
"ibmvscsi");
|
||||
|
||||
VIR_ENUM_IMPL(virDomainControllerModelUSB, VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
|
||||
"piix3-uhci",
|
||||
|
@ -422,6 +422,7 @@ enum virDomainControllerModelSCSI {
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC,
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068,
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI,
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI,
|
||||
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST
|
||||
};
|
||||
|
@ -2288,14 +2288,30 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
|
||||
int *nusbcontroller)
|
||||
{
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
int model;
|
||||
|
||||
switch (def->type) {
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
|
||||
if (STREQ(domainDef->os.arch, "ppc64") &&
|
||||
STREQ(domainDef->os.machine, "pseries")) {
|
||||
virBufferAddLit(&buf, "spapr-vscsi");
|
||||
} else {
|
||||
model = def->model;
|
||||
if (model == -1 || model == VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO) {
|
||||
if (STREQ(domainDef->os.arch, "ppc64") &&
|
||||
STREQ(domainDef->os.machine, "pseries")) {
|
||||
model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
|
||||
} else {
|
||||
model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
|
||||
}
|
||||
}
|
||||
switch (model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC:
|
||||
virBufferAddLit(&buf, "lsi");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||
virBufferAddLit(&buf, "spapr-vscsi");
|
||||
break;
|
||||
default:
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Unsupported controller model: %s"),
|
||||
virDomainControllerModelSCSITypeToString(model));
|
||||
}
|
||||
virBufferAsprintf(&buf, ",id=scsi%d", def->idx);
|
||||
break;
|
||||
|
@ -481,16 +481,17 @@ def->parallels[0]...
|
||||
#define VMX_BUILD_NAME(_suffix) \
|
||||
VMX_BUILD_NAME_EXTRA(_suffix, #_suffix)
|
||||
|
||||
/* directly map the virDomainControllerModel to virVMXSCSIControllerModel,
|
||||
* this is good enough for now because all virDomainControllerModel values
|
||||
* are actually SCSI controller models in the ESX case */
|
||||
/* directly map the virDomainControllerModel to virVMXSCSIControllerModel.
|
||||
* Using an uppercase name for unused values ensures that they will never
|
||||
* be used. */
|
||||
VIR_ENUM_DECL(virVMXControllerModelSCSI)
|
||||
VIR_ENUM_IMPL(virVMXControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
|
||||
"auto", /* just to match virDomainControllerModel, will never be used */
|
||||
"buslogic",
|
||||
"lsilogic",
|
||||
"lsisas1068",
|
||||
"pvscsi");
|
||||
"pvscsi",
|
||||
"UNUSED ibmvscsi");
|
||||
|
||||
|
||||
|
||||
|
8
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-vscsi.args
Normal file
8
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-vscsi.args
Normal file
@ -0,0 +1,8 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
|
||||
pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor \
|
||||
unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device spapr-vscsi,id=scsi0,\
|
||||
bus=pci.0,addr=0x3 -drive file=/dev/HostVG/QEMUGuest1,if=none,\
|
||||
id=drive-ide0-0-0 -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,\
|
||||
id=ide0-0-0 -drive file=/tmp/scsidisk.img,if=none,id=drive-scsi0-0-0 -device \
|
||||
scsi-disk,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0 -usb \
|
||||
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
|
31
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-vscsi.xml
Normal file
31
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-vscsi.xml
Normal file
@ -0,0 +1,31 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219136</memory>
|
||||
<currentMemory>219136</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch='i686' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu</emulator>
|
||||
<disk type='block' device='disk'>
|
||||
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<address type='drive' controller='0' bus='0' unit='0'/>
|
||||
</disk>
|
||||
<disk type='file' device='disk'>
|
||||
<source file='/tmp/scsidisk.img'/>
|
||||
<target dev='sda' bus='scsi'/>
|
||||
<address type='drive' controller='0' bus='0' unit='0'/>
|
||||
</disk>
|
||||
<controller type='ide' index='0'/>
|
||||
<controller type='scsi' index='0' model='ibmvscsi'/>
|
||||
<memballoon model='virtio'/>
|
||||
</devices>
|
||||
</domain>
|
@ -429,6 +429,8 @@ mymain(void)
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
|
||||
DO_TEST("disk-scsi-device-auto", false,
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
|
||||
DO_TEST("disk-scsi-vscsi", false,
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
|
||||
DO_TEST("disk-sata-device", false,
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE,
|
||||
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_ICH9_AHCI);
|
||||
|
@ -139,6 +139,7 @@ mymain(void)
|
||||
DO_TEST("disk-drive-cache-v1-wb");
|
||||
DO_TEST("disk-drive-cache-v1-none");
|
||||
DO_TEST("disk-scsi-device");
|
||||
DO_TEST("disk-scsi-vscsi");
|
||||
DO_TEST("graphics-listen-network");
|
||||
DO_TEST("graphics-vnc");
|
||||
DO_TEST("graphics-vnc-sasl");
|
||||
|
Loading…
Reference in New Issue
Block a user