The scsi-block, scsi-hd, scsi-cd & scsi-generic devices can be used
with any controller including virtio-scsi, so must be considered
secure for virtualization.
All the non-virtio SCSI controllers, however, are serving emulation
use cases and are complex enough to not consider them secure.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
hw/scsi/esp-pci.c | 2 ++
hw/scsi/esp.c | 2 ++
hw/scsi/lsi53c895a.c | 2 ++
hw/scsi/megasas.c | 2 ++
hw/scsi/mptsas.c | 1 +
hw/scsi/scsi-disk.c | 4 ++++
hw/scsi/scsi-generic.c | 1 +
hw/scsi/spapr_vscsi.c | 1 +
hw/scsi/vhost-scsi-common.c | 1 +
hw/scsi/vmw_pvscsi.c | 1 +
10 files changed, 17 insertions(+)
diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index 12c86eb7aa..966524e3d7 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -450,6 +450,7 @@ static const TypeInfo esp_pci_info = {
.instance_init = esp_pci_init,
.instance_size = sizeof(PCIESPState),
.class_init = esp_pci_class_init,
+ .secure = false,
.interfaces = (const InterfaceInfo[]) {
{ INTERFACE_CONVENTIONAL_PCI_DEVICE },
{ },
@@ -574,6 +575,7 @@ static const TypeInfo dc390_info = {
.parent = TYPE_AM53C974_DEVICE,
.instance_size = sizeof(DC390State),
.class_init = dc390_class_init,
+ .secure = false,
};
static void esp_pci_register_types(void)
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 1d264c40e5..ba9bf6ec45 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -1678,6 +1678,7 @@ static const TypeInfo esp_info_types[] = {
.instance_init = sysbus_esp_init,
.instance_size = sizeof(SysBusESPState),
.class_init = sysbus_esp_class_init,
+ .secure = false,
},
{
.name = TYPE_ESP,
@@ -1686,6 +1687,7 @@ static const TypeInfo esp_info_types[] = {
.instance_finalize = esp_finalize,
.instance_size = sizeof(ESPState),
.class_init = esp_class_init,
+ .secure = false,
},
};
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 9ea4aa0a85..afdd9f0b47 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2396,6 +2396,7 @@ static const TypeInfo lsi_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(LSIState),
.class_init = lsi_class_init,
+ .secure = false,
.interfaces = (const InterfaceInfo[]) {
{ INTERFACE_CONVENTIONAL_PCI_DEVICE },
{ },
@@ -2413,6 +2414,7 @@ static const TypeInfo lsi53c810_info = {
.name = TYPE_LSI53C810,
.parent = TYPE_LSI53C895A,
.class_init = lsi53c810_class_init,
+ .secure = false,
};
static void lsi53c895a_register_types(void)
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 844643d916..6e5d9b71be 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2556,6 +2556,7 @@ static const TypeInfo megasas_info = {
.instance_size = sizeof(MegasasState),
.class_size = sizeof(MegasasBaseClass),
.abstract = true,
+ .secure = false,
};
static void megasas_register_types(void)
@@ -2572,6 +2573,7 @@ static void megasas_register_types(void)
type_info.class_data = info;
type_info.class_init = megasas_class_init;
type_info.interfaces = info->interfaces;
+ type_info.secure = false;
type_register_static(&type_info);
}
diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
index 4ada35b7ec..58388b4480 100644
--- a/hw/scsi/mptsas.c
+++ b/hw/scsi/mptsas.c
@@ -1441,6 +1441,7 @@ static const TypeInfo mptsas_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(MPTSASState),
.class_init = mptsas1068_class_init,
+ .secure = false,
.interfaces = (const InterfaceInfo[]) {
{ INTERFACE_CONVENTIONAL_PCI_DEVICE },
{ },
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index b4782c6248..dd3a24da4f 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -3173,6 +3173,7 @@ static const TypeInfo scsi_disk_base_info = {
.instance_size = sizeof(SCSIDiskState),
.class_size = sizeof(SCSIDiskClass),
.abstract = true,
+ .secure = true,
};
#define DEFINE_SCSI_DISK_PROPERTIES() \
@@ -3244,6 +3245,7 @@ static const TypeInfo scsi_hd_info = {
.name = "scsi-hd",
.parent = TYPE_SCSI_DISK_BASE,
.class_init = scsi_hd_class_initfn,
+ .secure = true,
};
static const Property scsi_cd_properties[] = {
@@ -3285,6 +3287,7 @@ static const TypeInfo scsi_cd_info = {
.name = "scsi-cd",
.parent = TYPE_SCSI_DISK_BASE,
.class_init = scsi_cd_class_initfn,
+ .secure = true,
};
#ifdef __linux__
@@ -3325,6 +3328,7 @@ static const TypeInfo scsi_block_info = {
.name = "scsi-block",
.parent = TYPE_SCSI_DISK_BASE,
.class_init = scsi_block_class_initfn,
+ .secure = true,
};
#endif
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index 9e380a2109..380e3184c1 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -806,6 +806,7 @@ static const TypeInfo scsi_generic_info = {
.parent = TYPE_SCSI_DEVICE,
.instance_size = sizeof(SCSIDevice),
.class_init = scsi_generic_class_initfn,
+ .secure = true,
};
static void scsi_generic_register_types(void)
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 20f70fb272..5560249863 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -1290,6 +1290,7 @@ static const TypeInfo spapr_vscsi_info = {
.parent = TYPE_VIO_SPAPR_DEVICE,
.instance_size = sizeof(VSCSIState),
.class_init = spapr_vscsi_class_init,
+ .secure = true,
};
static void spapr_vscsi_register_types(void)
diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c
index 43525ba46d..3db2191f33 100644
--- a/hw/scsi/vhost-scsi-common.c
+++ b/hw/scsi/vhost-scsi-common.c
@@ -164,6 +164,7 @@ static const TypeInfo vhost_scsi_common_info = {
.parent = TYPE_VIRTIO_SCSI_COMMON,
.instance_size = sizeof(VHostSCSICommon),
.abstract = true,
+ .secure = true,
};
static void virtio_register_types(void)
diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index 7c98b1b8ea..073e0e8b7b 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -1299,6 +1299,7 @@ static const TypeInfo pvscsi_info = {
.instance_size = sizeof(PVSCSIState),
.class_init = pvscsi_class_init,
.instance_init = pvscsi_instance_init,
+ .secure = true,
.interfaces = (const InterfaceInfo[]) {
{ TYPE_HOTPLUG_HANDLER },
{ INTERFACE_PCIE_DEVICE },
--
2.50.1