mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-30 16:35:24 +00:00
qemu: add support for LSI MegaRAID SAS1078 (aka megasas) SCSI controller
This does nothing more than adding the new device and capability. The device is present since QEMU 1.2.0. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
523207fe8c
commit
9f7a9aee37
@ -2091,9 +2091,9 @@
|
|||||||
control how many devices can be connected through the
|
control how many devices can be connected through the
|
||||||
controller. A "scsi" controller has an optional
|
controller. A "scsi" controller has an optional
|
||||||
attribute <code>model</code>, which is one of "auto", "buslogic",
|
attribute <code>model</code>, which is one of "auto", "buslogic",
|
||||||
"ibmvscsi", "lsilogic", "lsias1068", "virtio-scsi" or "vmpvscsi".
|
"ibmvscsi", "lsilogic", "lsisas1068", "lsisas1078", "virtio-scsi" or
|
||||||
A "usb" controller has an optional attribute <code>model</code>,
|
"vmpvscsi". A "usb" controller has an optional attribute
|
||||||
which is one of "piix3-uhci", "piix4-uhci", "ehci",
|
<code>model</code>, which is one of "piix3-uhci", "piix4-uhci", "ehci",
|
||||||
"ich9-ehci1", "ich9-uhci1", "ich9-uhci2", "ich9-uhci3",
|
"ich9-ehci1", "ich9-uhci1", "ich9-uhci2", "ich9-uhci3",
|
||||||
"vt82c686b-uhci", "pci-ohci" or "nec-xhci". Additionally,
|
"vt82c686b-uhci", "pci-ohci" or "nec-xhci". Additionally,
|
||||||
<span class="since">since 0.10.0</span>, if the USB bus needs to be
|
<span class="since">since 0.10.0</span>, if the USB bus needs to be
|
||||||
|
@ -1391,6 +1391,7 @@
|
|||||||
<value>vmpvscsi</value>
|
<value>vmpvscsi</value>
|
||||||
<value>ibmvscsi</value>
|
<value>ibmvscsi</value>
|
||||||
<value>virtio-scsi</value>
|
<value>virtio-scsi</value>
|
||||||
|
<value>lsisas1078</value>
|
||||||
<value>piix3-uhci</value>
|
<value>piix3-uhci</value>
|
||||||
<value>piix4-uhci</value>
|
<value>piix4-uhci</value>
|
||||||
<value>ehci</value>
|
<value>ehci</value>
|
||||||
|
@ -304,7 +304,8 @@ VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAS
|
|||||||
"lsisas1068",
|
"lsisas1068",
|
||||||
"vmpvscsi",
|
"vmpvscsi",
|
||||||
"ibmvscsi",
|
"ibmvscsi",
|
||||||
"virtio-scsi");
|
"virtio-scsi",
|
||||||
|
"lsisas1078");
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virDomainControllerModelUSB, VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
|
VIR_ENUM_IMPL(virDomainControllerModelUSB, VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
|
||||||
"piix3-uhci",
|
"piix3-uhci",
|
||||||
|
@ -695,6 +695,7 @@ enum virDomainControllerModelSCSI {
|
|||||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI,
|
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI,
|
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI,
|
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI,
|
||||||
|
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078,
|
||||||
|
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST
|
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST
|
||||||
};
|
};
|
||||||
|
@ -212,6 +212,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
|
|||||||
"rng-egd",
|
"rng-egd",
|
||||||
"virtio-ccw",
|
"virtio-ccw",
|
||||||
"dtb",
|
"dtb",
|
||||||
|
"megasas",
|
||||||
);
|
);
|
||||||
|
|
||||||
struct _virQEMUCaps {
|
struct _virQEMUCaps {
|
||||||
@ -1329,6 +1330,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
|
|||||||
{ "virtio-scsi-pci", QEMU_CAPS_VIRTIO_SCSI },
|
{ "virtio-scsi-pci", QEMU_CAPS_VIRTIO_SCSI },
|
||||||
{ "virtio-scsi-s390", QEMU_CAPS_VIRTIO_SCSI },
|
{ "virtio-scsi-s390", QEMU_CAPS_VIRTIO_SCSI },
|
||||||
{ "virtio-scsi-ccw", QEMU_CAPS_VIRTIO_SCSI },
|
{ "virtio-scsi-ccw", QEMU_CAPS_VIRTIO_SCSI },
|
||||||
|
{ "megasas", QEMU_CAPS_SCSI_MEGASAS },
|
||||||
{ "spicevmc", QEMU_CAPS_DEVICE_SPICEVMC },
|
{ "spicevmc", QEMU_CAPS_DEVICE_SPICEVMC },
|
||||||
{ "qxl-vga", QEMU_CAPS_DEVICE_QXL_VGA },
|
{ "qxl-vga", QEMU_CAPS_DEVICE_QXL_VGA },
|
||||||
{ "qxl", QEMU_CAPS_DEVICE_QXL },
|
{ "qxl", QEMU_CAPS_DEVICE_QXL },
|
||||||
|
@ -173,6 +173,7 @@ enum virQEMUCapsFlags {
|
|||||||
QEMU_CAPS_OBJECT_RNG_EGD = 131, /* EGD protocol daemon for rng */
|
QEMU_CAPS_OBJECT_RNG_EGD = 131, /* EGD protocol daemon for rng */
|
||||||
QEMU_CAPS_VIRTIO_CCW = 132, /* -device virtio-*-ccw */
|
QEMU_CAPS_VIRTIO_CCW = 132, /* -device virtio-*-ccw */
|
||||||
QEMU_CAPS_DTB = 133, /* -dtb file */
|
QEMU_CAPS_DTB = 133, /* -dtb file */
|
||||||
|
QEMU_CAPS_SCSI_MEGASAS = 134, /* -device megasas */
|
||||||
|
|
||||||
QEMU_CAPS_LAST, /* this must always be the last item */
|
QEMU_CAPS_LAST, /* this must always be the last item */
|
||||||
};
|
};
|
||||||
|
@ -500,7 +500,7 @@ qemuSetScsiControllerModel(virDomainDefPtr def,
|
|||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("This QEMU doesn't support "
|
_("This QEMU doesn't support "
|
||||||
"lsi scsi controller"));
|
"the LSI 53C895A SCSI controller"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -515,6 +515,14 @@ qemuSetScsiControllerModel(virDomainDefPtr def,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||||
/*TODO: need checking work here if necessary */
|
/*TODO: need checking work here if necessary */
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078:
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_MEGASAS)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("This QEMU doesn't support "
|
||||||
|
"the LSI SAS1078 controller"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported controller model: %s"),
|
_("Unsupported controller model: %s"),
|
||||||
@ -3544,6 +3552,9 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||||
virBufferAddLit(&buf, "spapr-vscsi");
|
virBufferAddLit(&buf, "spapr-vscsi");
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078:
|
||||||
|
virBufferAddLit(&buf, "megasas");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported controller model: %s"),
|
_("Unsupported controller model: %s"),
|
||||||
|
@ -511,7 +511,8 @@ VIR_ENUM_IMPL(virVMXControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
|
|||||||
"lsisas1068",
|
"lsisas1068",
|
||||||
"pvscsi",
|
"pvscsi",
|
||||||
"UNUSED ibmvscsi",
|
"UNUSED ibmvscsi",
|
||||||
"UNUSED virtio-scsi");
|
"UNUSED virtio-scsi",
|
||||||
|
"UNUSED lsisas1078");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -912,7 +912,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
|
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
QEMU_CAPS_DTB);
|
QEMU_CAPS_DTB,
|
||||||
|
QEMU_CAPS_SCSI_MEGASAS);
|
||||||
DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
|
DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@ -1017,7 +1018,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
|
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
QEMU_CAPS_DTB);
|
QEMU_CAPS_DTB,
|
||||||
|
QEMU_CAPS_SCSI_MEGASAS);
|
||||||
|
|
||||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
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 \
|
||||||
|
megasas,id=scsi0,bus=pci.0,addr=0x3 -usb -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-4-0 -device scsi-disk,bus=scsi0.0,channel=0,scsi-id=4,lun=0,\
|
||||||
|
drive=drive-scsi0-0-4-0,id=scsi0-0-4-0 -device virtio-balloon-pci,\
|
||||||
|
id=balloon0,bus=pci.0,addr=0x4
|
32
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-megasas.xml
Normal file
32
tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-megasas.xml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>219136</memory>
|
||||||
|
<currentMemory unit='KiB'>219136</currentMemory>
|
||||||
|
<vcpu placement='static'>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' target='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' target='4' unit='0'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='ide' index='0'/>
|
||||||
|
<controller type='scsi' index='0' model='lsisas1078'/>
|
||||||
|
<controller type='usb' index='0'/>
|
||||||
|
<memballoon model='virtio'/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -550,6 +550,9 @@ mymain(void)
|
|||||||
DO_TEST("disk-scsi-virtio-scsi",
|
DO_TEST("disk-scsi-virtio-scsi",
|
||||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
|
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
|
||||||
QEMU_CAPS_VIRTIO_SCSI);
|
QEMU_CAPS_VIRTIO_SCSI);
|
||||||
|
DO_TEST("disk-scsi-megasas",
|
||||||
|
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
|
||||||
|
QEMU_CAPS_SCSI_MEGASAS);
|
||||||
DO_TEST("disk-sata-device",
|
DO_TEST("disk-sata-device",
|
||||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE,
|
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE,
|
||||||
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_ICH9_AHCI);
|
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_ICH9_AHCI);
|
||||||
|
@ -179,6 +179,7 @@ mymain(void)
|
|||||||
DO_TEST("disk-scsi-device");
|
DO_TEST("disk-scsi-device");
|
||||||
DO_TEST("disk-scsi-vscsi");
|
DO_TEST("disk-scsi-vscsi");
|
||||||
DO_TEST("disk-scsi-virtio-scsi");
|
DO_TEST("disk-scsi-virtio-scsi");
|
||||||
|
DO_TEST("disk-scsi-megasas");
|
||||||
DO_TEST_FULL("disk-mirror", false, WHEN_ACTIVE);
|
DO_TEST_FULL("disk-mirror", false, WHEN_ACTIVE);
|
||||||
DO_TEST_FULL("disk-mirror", true, WHEN_INACTIVE);
|
DO_TEST_FULL("disk-mirror", true, WHEN_INACTIVE);
|
||||||
DO_TEST("graphics-listen-network");
|
DO_TEST("graphics-listen-network");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user