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);