qemu: add capabilities for the three ESP family SCSI controllers

Probing for the NCR53C90 controller is a little unusual. The
qom-list-types QMP command returns a list of all types known to
the QEMU binary. It does not distinguish devices which are user
creatable from those which are built-in.

Any QEMU target that supports PCI will have the DC390 / AM53C974
devices because they are PCI based. Due to code dependencies
in QEMU though, existence of these two devices will also pull in
the NCR53C90 device (called just 'esp' in QEMU). The NCR53C90 is
not user-creatable and can only be used when built-in to the
machine type.

This is only the case on sparc machines, and certain mips64 and
m68k machines.  IOW, we don't rely on qom-list-types as a guide
for existence of NCR53C90, as it shouldn't really exist in most
QEMU binaries.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2020-11-18 16:37:54 +00:00
parent 19264c706b
commit 98caef4a55
41 changed files with 110 additions and 0 deletions

View File

@ -604,6 +604,11 @@ VIR_ENUM_IMPL(virQEMUCaps,
"block-export-add",
"netdev.vhost-vdpa",
"fsdev.createmode",
/* 385 */
"ncr53c90",
"dc390",
"am53c974",
);
@ -1306,6 +1311,20 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
{ "tcg-accel", QEMU_CAPS_TCG },
{ "pvscsi", QEMU_CAPS_SCSI_PVSCSI },
{ "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY },
/*
* We don't probe 'esp' directly, because it is often reported
* as present for all QEMU binaries, due to it being enabled
* for built as a dependancy of dc390/am53c974 PCI SCSI
* controllers.
*
* The base 'esp' device is only used as a built-in device
* and is not user-creatable. So we turn this cap on later
* based on arch.
*
* { "esp", QEMU_CAPS_SCSI_NCR53C90 },
*/
{ "dc390", QEMU_CAPS_SCSI_DC390 },
{ "am53c974", QEMU_CAPS_SCSI_AM53C974 },
};
@ -5121,6 +5140,14 @@ virQEMUCapsInitProcessCaps(virQEMUCapsPtr qemuCaps)
virQEMUCapsGet(qemuCaps, QEMU_CAPS_SAVEVM_MONITOR_NODES))
virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV);
/* We can't probe "esp" as a type via virQEMUCapsObjectTypes
* array as it is only usable when builtin to the machine type
*/
if (qemuCaps->arch == VIR_ARCH_SPARC ||
qemuCaps->arch == VIR_ARCH_M68K ||
qemuCaps->arch == VIR_ARCH_MIPS)
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SCSI_NCR53C90);
virQEMUCapsInitProcessCapsInterlock(qemuCaps);
}

View File

@ -585,6 +585,11 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
QEMU_CAPS_NETDEV_VHOST_VDPA, /* -netdev vhost-vdpa*/
QEMU_CAPS_FSDEV_CREATEMODE, /* fsdev.createmode */
/* 385 */
QEMU_CAPS_SCSI_NCR53C90, /* built-in SCSI */
QEMU_CAPS_SCSI_DC390, /* -device dc-390 */
QEMU_CAPS_SCSI_AM53C974, /* -device am53c974 */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;

View File

@ -88,6 +88,8 @@
<flag name='i8042'/>
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>1005003</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100245</microcodeVersion>

View File

@ -93,6 +93,8 @@
<flag name='i8042'/>
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>1006000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>

View File

@ -95,6 +95,8 @@
<flag name='i8042'/>
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>1007000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>

View File

@ -111,6 +111,8 @@
<flag name='i8042'/>
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2001001</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100240</microcodeVersion>

View File

@ -147,6 +147,8 @@
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2010000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700287</microcodeVersion>

View File

@ -147,6 +147,8 @@
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2010000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900287</microcodeVersion>

View File

@ -191,6 +191,8 @@
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2010000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100287</microcodeVersion>

View File

@ -198,6 +198,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2011000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100288</microcodeVersion>

View File

@ -164,6 +164,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2012000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700289</microcodeVersion>

View File

@ -165,6 +165,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900289</microcodeVersion>

View File

@ -208,6 +208,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100289</microcodeVersion>

View File

@ -138,6 +138,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2004000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>

View File

@ -144,6 +144,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2005000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>

View File

@ -127,6 +127,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2006000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700244</microcodeVersion>

View File

@ -123,6 +123,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2006000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900244</microcodeVersion>

View File

@ -156,6 +156,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2006000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>

View File

@ -161,6 +161,8 @@
<flag name='tcg'/>
<flag name='pvscsi'/>
<flag name='fw_cfg'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2007000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100245</microcodeVersion>

View File

@ -166,6 +166,8 @@
<flag name='fw_cfg'/>
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2008000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100246</microcodeVersion>

View File

@ -138,6 +138,8 @@
<flag name='fw_cfg'/>
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2009000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900247</microcodeVersion>

View File

@ -184,6 +184,8 @@
<flag name='fw_cfg'/>
<flag name='migration-param.bandwidth'/>
<flag name='migration-param.downtime'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2009000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100247</microcodeVersion>

View File

@ -167,6 +167,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>2012050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900239</microcodeVersion>

View File

@ -214,6 +214,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>3000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100239</microcodeVersion>

View File

@ -172,6 +172,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>3000091</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900240</microcodeVersion>

View File

@ -217,6 +217,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>3000092</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100240</microcodeVersion>

View File

@ -178,6 +178,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700240</microcodeVersion>

View File

@ -186,6 +186,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900240</microcodeVersion>

View File

@ -179,6 +179,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>

View File

@ -179,6 +179,8 @@
<flag name='migration-param.downtime'/>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>

View File

@ -223,6 +223,8 @@
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='intel-iommu.aw-bits'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100240</microcodeVersion>

View File

@ -229,6 +229,8 @@
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='intel-iommu.aw-bits'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100241</microcodeVersion>

View File

@ -191,6 +191,8 @@
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4001050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700242</microcodeVersion>

View File

@ -192,6 +192,8 @@
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='spapr-tpm-proxy'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4001050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900242</microcodeVersion>

View File

@ -238,6 +238,8 @@
<flag name='intel-iommu.aw-bits'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>

View File

@ -201,6 +201,8 @@
<flag name='numa.hmat'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700241</microcodeVersion>

View File

@ -210,6 +210,8 @@
<flag name='numa.hmat'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900241</microcodeVersion>

View File

@ -197,6 +197,8 @@
<flag name='numa.hmat'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>

View File

@ -245,6 +245,8 @@
<flag name='numa.hmat'/>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100241</microcodeVersion>

View File

@ -247,6 +247,8 @@
<flag name='virtio-balloon.free-page-reporting'/>
<flag name='netdev.vhost-vdpa'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>

View File

@ -249,6 +249,8 @@
<flag name='block-export-add'/>
<flag name='netdev.vhost-vdpa'/>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
<version>5001091</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>