From 19264c706b358463663b051e4c4e0dd85d4589b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 17 Nov 2020 18:15:44 +0000 Subject: [PATCH] conf: add support for ESP SCSI controller family MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The NCR53C90 is the built-in SCSI controller on all sparc machine types, and some mips and m68k machine types. The DC390 and AM53C974 are PCI SCSI controllers that can be added to any PCI machine. These are only interesting for emulating obsolete hardware platforms. Signed-off-by: Daniel P. Berrangé --- docs/formatdomain.rst | 3 ++- docs/schemas/domaincommon.rng | 3 +++ src/conf/domain_conf.c | 8 ++++++++ src/conf/domain_conf.h | 3 +++ src/qemu/qemu_command.c | 3 +++ src/qemu/qemu_domain_address.c | 3 +++ src/qemu/qemu_validate.c | 6 ++++++ src/vbox/vbox_common.c | 3 +++ src/vmx/vmx.c | 3 +++ 9 files changed, 34 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index c2c23371b1..ff64996af2 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -3426,7 +3426,8 @@ specific features, such as: ``scsi`` A ``scsi`` controller has an optional attribute ``model``, which is one of 'auto', 'buslogic', 'ibmvscsi', 'lsilogic', 'lsisas1068', 'lsisas1078', - 'virtio-scsi', 'vmpvscsi', 'virtio-transitional', 'virtio-non-transitional'. + 'virtio-scsi', 'vmpvscsi', 'virtio-transitional', 'virtio-non-transitional', + 'ncr53c90' (as builtin implicit controller only), 'am53c974', 'dc390'. See `Virtio transitional devices <#elementsVirtioTransitional>`__ for more details. ``usb`` diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index f86a854863..1ccc9759ea 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -2381,6 +2381,9 @@ lsisas1078 virtio-transitional virtio-non-transitional + ncr53c90 + dc390 + am53c974 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 282e3fbc6a..2393bf6a37 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -445,6 +445,9 @@ VIR_ENUM_IMPL(virDomainControllerModelSCSI, "lsisas1078", "virtio-transitional", "virtio-non-transitional", + "ncr53c90", + "dc390", + "am53c974", ); VIR_ENUM_IMPL(virDomainControllerModelISA, VIR_DOMAIN_CONTROLLER_MODEL_ISA_LAST, @@ -4971,6 +4974,11 @@ virDomainSCSIDriveAddressIsUsed(const virDomainDef *def, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: reserved = 7; break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: + max = 6; + break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3e3d4bd002..96e6c34553 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -649,6 +649,9 @@ typedef enum { VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST } virDomainControllerModelSCSI; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 34b5746c1a..d3de13c6ee 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2473,6 +2473,9 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(def->model)); diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index dd87915a97..f1fb532f39 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -637,6 +637,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev, case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: switch ((virDomainControllerModelSCSI) cont->model) { case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: return 0; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: @@ -652,6 +653,8 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: return pciFlags; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 6ddef3de35..add8bc4557 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -2953,6 +2953,9 @@ qemuValidateCheckSCSIControllerModel(virQEMUCapsPtr qemuCaps, break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(model)); @@ -3071,6 +3074,9 @@ qemuValidateDomainDeviceDefControllerSCSI(const virDomainControllerDef *controll case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: break; diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index fc897735b0..138403b034 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -433,6 +433,9 @@ vboxSetStorageController(virDomainControllerDefPtr controller, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %s SCSI " "controller model"), diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 4001174380..0d79b8f0ec 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -560,6 +560,9 @@ VIR_ENUM_IMPL(virVMXControllerModelSCSI, "UNUSED lsisas1078", "UNUSED virtio-transitional", "UNUSED virtio-non-transitional", + "UNUSED ncr53c90", + "UNUSED dc390", + "UNUSED am53c974", ); static int virVMXParseVNC(virConfPtr conf, virDomainGraphicsDefPtr *def);