提交 3ceb4c7d 编写于 作者: L Laine Stump

qemu: set/validate slot/connection type when assigning slots for PCI devices

Since PCI bridges, PCIe bridges, PCIe switches, and PCIe root ports
all share the same namespace, they are all defined as controllers of
type='pci' in libvirt (but with a differing model attribute). Each of
these controllers has a certain connection type upstream, allows
certain connection types downstream, and each can either allow a
single downstream connection at slot 0, or connections from slot 1 -
31.

Right now, we only support the pci-root and pci-bridge devices, both
of which only allow PCI devices to connect, and both which have usable
slots 1 - 31. In preparation for adding other types of controllers
that have different capabilities, this patch 1) adds info to the
qemuDomainPCIAddressBus object to indicate the capabilities, 2) sets
those capabilities appropriately for pci-root and pci-bridge devices,
and 3) validates that the controller being connected to is the proper
type when allocating slots or validating that a user-selected slot is
appropriate for a device..

Having this infrastructure in place will make it much easier to add
support for the other PCI controller types.

While it would be possible to do all the necessary checking by just
storing the controller model in the qemyuDomainPCIAddressBus, it
greatly simplifies all the validation code to also keep a "flags",
"minSlot" and "maxSlot" for each - that way we can just check those
attributes rather than requiring a nearly identical switch statement
everywhere we need to validate compatibility.

You may notice many places where the flags are seemingly hard-coded to

  QEMU_PCI_CONNECT_HOTPLUGGABLE | QEMU_PCI_CONNECT_TYPE_PCI

This is currently the correct value for all PCI devices, and in the
future will be the default, with small bits of code added to change to
the flags for the few devices which are the exceptions to this rule.

Finally, there are a few places with "FIXME" comments. Note that these
aren't indicating places that are broken according to the currently
supported devices, they are places that will need fixing when support
for new PCI controller models is added.

To assure that there was no regression in the auto-allocation of PCI
addresses or auto-creation of integrated pci-root, ide, and usb
controllers, a new test case (pci-bridge-many-disks) has been added to
both the qemuxml2argv and qemuxml2xml tests. This new test defines a
domain with several dozen virtio disks but no pci-root or
pci-bridges. The .args file of the new test case was created using
libvirt sources from before this patch, and the test still passes
after this patch has been applied.
上级 9adafa08
......@@ -766,12 +766,12 @@ enum virDomainControllerType {
};
enum virDomainControllerModelPCI {
typedef enum {
VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT,
VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE,
VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST
};
} virDomainControllerModelPCI;
enum virDomainControllerModelSCSI {
VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO,
......
......@@ -139,6 +139,7 @@ virDomainControllerDefFree;
virDomainControllerFind;
virDomainControllerInsert;
virDomainControllerInsertPreAlloced;
virDomainControllerModelPCITypeToString;
virDomainControllerModelSCSITypeFromString;
virDomainControllerModelSCSITypeToString;
virDomainControllerModelUSBTypeFromString;
......
此差异已折叠。
......@@ -225,6 +225,23 @@ void qemuDomainReleaseDeviceAddress(virDomainObjPtr vm,
virDomainDeviceInfoPtr info,
const char *devstr);
typedef enum {
QEMU_PCI_CONNECT_HOTPLUGGABLE = 1 << 0,
/* This bus supports hot-plug */
QEMU_PCI_CONNECT_SINGLESLOT = 1 << 1,
/* This "bus" has only a single downstream slot/port */
QEMU_PCI_CONNECT_TYPE_PCI = 1 << 2,
/* PCI devices can connect to this bus */
} qemuDomainPCIConnectFlags;
/* a combination of all bit that describe the type of connections
* allowed, e.g. PCI, PCIe, switch
*/
# define QEMU_PCI_CONNECT_TYPES_MASK \
QEMU_PCI_CONNECT_TYPE_PCI
int qemuDomainAssignPCIAddresses(virDomainDefPtr def,
virQEMUCapsPtr qemuCaps,
virDomainObjPtr obj);
......@@ -232,11 +249,14 @@ qemuDomainPCIAddressSetPtr qemuDomainPCIAddressSetCreate(virDomainDefPtr def,
unsigned int nbuses,
bool dryRun);
int qemuDomainPCIAddressReserveSlot(qemuDomainPCIAddressSetPtr addrs,
virDevicePCIAddressPtr addr);
virDevicePCIAddressPtr addr,
qemuDomainPCIConnectFlags flags);
int qemuDomainPCIAddressReserveAddr(qemuDomainPCIAddressSetPtr addrs,
virDevicePCIAddressPtr addr);
virDevicePCIAddressPtr addr,
qemuDomainPCIConnectFlags flags);
int qemuDomainPCIAddressSetNextAddr(qemuDomainPCIAddressSetPtr addrs,
virDomainDeviceInfoPtr dev);
virDomainDeviceInfoPtr dev,
qemuDomainPCIConnectFlags flags);
int qemuDomainPCIAddressEnsureAddr(qemuDomainPCIAddressSetPtr addrs,
virDomainDeviceInfoPtr dev);
int qemuDomainPCIAddressReleaseAddr(qemuDomainPCIAddressSetPtr addrs,
......
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu-kvm \
-S -M pc-i440fx-1.4 -cpu qemu64,-kvmclock -bios /usr/share/seabios/bios.bin \
-m 3907 -smp 1 -nographic -nodefaults \
-monitor unix:/tmp/test-monitor,server,nowait -boot c \
-device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x3 \
-device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.0,addr=0x4 \
-device pci-bridge,chassis_nr=3,id=pci.3,bus=pci.0,addr=0x5 \
-usb -drive file=/var/lib/libvirt/images/test.img,if=none,id=drive-virtio-disk0 \
-device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 \
-drive file=/var/lib/libvirt/images/disk-a-a.img,if=none,id=drive-virtio-disk0 \
-device virtio-blk-pci,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0 \
-drive file=/var/lib/libvirt/images/disk-a-b.img,if=none,id=drive-virtio-disk27 \
-device virtio-blk-pci,bus=pci.0,addr=0x8,drive=drive-virtio-disk27,id=virtio-disk27 \
-drive file=/var/lib/libvirt/images/disk-a-c.img,if=none,id=drive-virtio-disk28 \
-device virtio-blk-pci,bus=pci.0,addr=0x9,drive=drive-virtio-disk28,id=virtio-disk28 \
-drive file=/var/lib/libvirt/images/disk-a-d.img,if=none,id=drive-virtio-disk29 \
-device virtio-blk-pci,bus=pci.0,addr=0xa,drive=drive-virtio-disk29,id=virtio-disk29 \
-drive file=/var/lib/libvirt/images/disk-b-a.img,if=none,id=drive-virtio-disk52 \
-device virtio-blk-pci,bus=pci.0,addr=0xb,drive=drive-virtio-disk52,id=virtio-disk52 \
-drive file=/var/lib/libvirt/images/disk-b-b.img,if=none,id=drive-virtio-disk53 \
-device virtio-blk-pci,bus=pci.0,addr=0xc,drive=drive-virtio-disk53,id=virtio-disk53 \
-drive file=/var/lib/libvirt/images/disk-b-c.img,if=none,id=drive-virtio-disk54 \
-device virtio-blk-pci,bus=pci.0,addr=0xd,drive=drive-virtio-disk54,id=virtio-disk54 \
-drive file=/var/lib/libvirt/images/disk-b-d.img,if=none,id=drive-virtio-disk55 \
-device virtio-blk-pci,bus=pci.0,addr=0xe,drive=drive-virtio-disk55,id=virtio-disk55 \
-drive file=/var/lib/libvirt/images/disk-c-a.img,if=none,id=drive-virtio-disk78 \
-device virtio-blk-pci,bus=pci.0,addr=0xf,drive=drive-virtio-disk78,id=virtio-disk78 \
-drive file=/var/lib/libvirt/images/disk-c-b.img,if=none,id=drive-virtio-disk79 \
-device virtio-blk-pci,bus=pci.0,addr=0x10,drive=drive-virtio-disk79,id=virtio-disk79 \
-drive file=/var/lib/libvirt/images/disk-c-c.img,if=none,id=drive-virtio-disk80 \
-device virtio-blk-pci,bus=pci.0,addr=0x11,drive=drive-virtio-disk80,id=virtio-disk80 \
-drive file=/var/lib/libvirt/images/disk-c-d.img,if=none,id=drive-virtio-disk81 \
-device virtio-blk-pci,bus=pci.0,addr=0x12,drive=drive-virtio-disk81,id=virtio-disk81 \
-drive file=/var/lib/libvirt/images/disk-d-a.img,if=none,id=drive-virtio-disk104 \
-device virtio-blk-pci,bus=pci.0,addr=0x13,drive=drive-virtio-disk104,id=virtio-disk104 \
-drive file=/var/lib/libvirt/images/disk-d-b.img,if=none,id=drive-virtio-disk105 \
-device virtio-blk-pci,bus=pci.0,addr=0x14,drive=drive-virtio-disk105,id=virtio-disk105 \
-drive file=/var/lib/libvirt/images/disk-d-c.img,if=none,id=drive-virtio-disk106 \
-device virtio-blk-pci,bus=pci.0,addr=0x15,drive=drive-virtio-disk106,id=virtio-disk106 \
-drive file=/var/lib/libvirt/images/disk-d-d.img,if=none,id=drive-virtio-disk107 \
-device virtio-blk-pci,bus=pci.0,addr=0x16,drive=drive-virtio-disk107,id=virtio-disk107 \
-drive file=/var/lib/libvirt/images/disk-e-a.img,if=none,id=drive-virtio-disk130 \
-device virtio-blk-pci,bus=pci.0,addr=0x17,drive=drive-virtio-disk130,id=virtio-disk130 \
-drive file=/var/lib/libvirt/images/disk-e-b.img,if=none,id=drive-virtio-disk131 \
-device virtio-blk-pci,bus=pci.0,addr=0x18,drive=drive-virtio-disk131,id=virtio-disk131 \
-drive file=/var/lib/libvirt/images/disk-e-c.img,if=none,id=drive-virtio-disk132 \
-device virtio-blk-pci,bus=pci.0,addr=0x19,drive=drive-virtio-disk132,id=virtio-disk132 \
-drive file=/var/lib/libvirt/images/disk-e-d.img,if=none,id=drive-virtio-disk133 \
-device virtio-blk-pci,bus=pci.0,addr=0x1a,drive=drive-virtio-disk133,id=virtio-disk133 \
-drive file=/var/lib/libvirt/images/disk-f-a.img,if=none,id=drive-virtio-disk156 \
-device virtio-blk-pci,bus=pci.0,addr=0x1b,drive=drive-virtio-disk156,id=virtio-disk156 \
-drive file=/var/lib/libvirt/images/disk-f-b.img,if=none,id=drive-virtio-disk157 \
-device virtio-blk-pci,bus=pci.0,addr=0x1c,drive=drive-virtio-disk157,id=virtio-disk157 \
-drive file=/var/lib/libvirt/images/disk-f-c.img,if=none,id=drive-virtio-disk158 \
-device virtio-blk-pci,bus=pci.0,addr=0x1d,drive=drive-virtio-disk158,id=virtio-disk158 \
-drive file=/var/lib/libvirt/images/disk-f-d.img,if=none,id=drive-virtio-disk159 \
-device virtio-blk-pci,bus=pci.0,addr=0x1e,drive=drive-virtio-disk159,id=virtio-disk159 \
-drive file=/var/lib/libvirt/images/disk-g-a.img,if=none,id=drive-virtio-disk182 \
-device virtio-blk-pci,bus=pci.0,addr=0x1f,drive=drive-virtio-disk182,id=virtio-disk182 \
-drive file=/var/lib/libvirt/images/disk-g-b.img,if=none,id=drive-virtio-disk183 \
-device virtio-blk-pci,bus=pci.1,addr=0x1,drive=drive-virtio-disk183,id=virtio-disk183 \
-drive file=/var/lib/libvirt/images/disk-g-c.img,if=none,id=drive-virtio-disk184 \
-device virtio-blk-pci,bus=pci.1,addr=0x2,drive=drive-virtio-disk184,id=virtio-disk184 \
-drive file=/var/lib/libvirt/images/disk-g-d.img,if=none,id=drive-virtio-disk185 \
-device virtio-blk-pci,bus=pci.1,addr=0x3,drive=drive-virtio-disk185,id=virtio-disk185 \
-drive file=/var/lib/libvirt/images/disk-h-a.img,if=none,id=drive-virtio-disk208 \
-device virtio-blk-pci,bus=pci.1,addr=0x4,drive=drive-virtio-disk208,id=virtio-disk208 \
-drive file=/var/lib/libvirt/images/disk-h-b.img,if=none,id=drive-virtio-disk209 \
-device virtio-blk-pci,bus=pci.1,addr=0x5,drive=drive-virtio-disk209,id=virtio-disk209 \
-drive file=/var/lib/libvirt/images/disk-h-c.img,if=none,id=drive-virtio-disk210 \
-device virtio-blk-pci,bus=pci.1,addr=0x6,drive=drive-virtio-disk210,id=virtio-disk210 \
-drive file=/var/lib/libvirt/images/disk-h-d.img,if=none,id=drive-virtio-disk211 \
-device virtio-blk-pci,bus=pci.1,addr=0x7,drive=drive-virtio-disk211,id=virtio-disk211 \
-drive file=/var/lib/libvirt/images/disk-i-a.img,if=none,id=drive-virtio-disk234 \
-device virtio-blk-pci,bus=pci.1,addr=0x8,drive=drive-virtio-disk234,id=virtio-disk234 \
-drive file=/var/lib/libvirt/images/disk-i-b.img,if=none,id=drive-virtio-disk235 \
-device virtio-blk-pci,bus=pci.1,addr=0x9,drive=drive-virtio-disk235,id=virtio-disk235 \
-drive file=/var/lib/libvirt/images/disk-i-c.img,if=none,id=drive-virtio-disk236 \
-device virtio-blk-pci,bus=pci.1,addr=0xa,drive=drive-virtio-disk236,id=virtio-disk236 \
-drive file=/var/lib/libvirt/images/disk-i-d.img,if=none,id=drive-virtio-disk237 \
-device virtio-blk-pci,bus=pci.1,addr=0xb,drive=drive-virtio-disk237,id=virtio-disk237 \
-drive file=/var/lib/libvirt/images/disk-j-a.img,if=none,id=drive-virtio-disk260 \
-device virtio-blk-pci,bus=pci.1,addr=0xc,drive=drive-virtio-disk260,id=virtio-disk260 \
-drive file=/var/lib/libvirt/images/disk-j-b.img,if=none,id=drive-virtio-disk261 \
-device virtio-blk-pci,bus=pci.1,addr=0xd,drive=drive-virtio-disk261,id=virtio-disk261 \
-drive file=/var/lib/libvirt/images/disk-j-c.img,if=none,id=drive-virtio-disk262 \
-device virtio-blk-pci,bus=pci.1,addr=0xe,drive=drive-virtio-disk262,id=virtio-disk262 \
-drive file=/var/lib/libvirt/images/disk-j-d.img,if=none,id=drive-virtio-disk263 \
-device virtio-blk-pci,bus=pci.1,addr=0xf,drive=drive-virtio-disk263,id=virtio-disk263 \
-drive file=/var/lib/libvirt/images/disk-k-a.img,if=none,id=drive-virtio-disk286 \
-device virtio-blk-pci,bus=pci.1,addr=0x10,drive=drive-virtio-disk286,id=virtio-disk286 \
-drive file=/var/lib/libvirt/images/disk-k-b.img,if=none,id=drive-virtio-disk287 \
-device virtio-blk-pci,bus=pci.1,addr=0x11,drive=drive-virtio-disk287,id=virtio-disk287 \
-drive file=/var/lib/libvirt/images/disk-k-c.img,if=none,id=drive-virtio-disk288 \
-device virtio-blk-pci,bus=pci.1,addr=0x12,drive=drive-virtio-disk288,id=virtio-disk288 \
-drive file=/var/lib/libvirt/images/disk-k-d.img,if=none,id=drive-virtio-disk289 \
-device virtio-blk-pci,bus=pci.1,addr=0x13,drive=drive-virtio-disk289,id=virtio-disk289 \
-drive file=/var/lib/libvirt/images/disk-l-a.img,if=none,id=drive-virtio-disk312 \
-device virtio-blk-pci,bus=pci.1,addr=0x14,drive=drive-virtio-disk312,id=virtio-disk312 \
-drive file=/var/lib/libvirt/images/disk-l-b.img,if=none,id=drive-virtio-disk313 \
-device virtio-blk-pci,bus=pci.1,addr=0x15,drive=drive-virtio-disk313,id=virtio-disk313 \
-drive file=/var/lib/libvirt/images/disk-l-c.img,if=none,id=drive-virtio-disk314 \
-device virtio-blk-pci,bus=pci.1,addr=0x16,drive=drive-virtio-disk314,id=virtio-disk314 \
-drive file=/var/lib/libvirt/images/disk-l-d.img,if=none,id=drive-virtio-disk315 \
-device virtio-blk-pci,bus=pci.1,addr=0x17,drive=drive-virtio-disk315,id=virtio-disk315 \
-drive file=/var/lib/libvirt/images/disk-m-a.img,if=none,id=drive-virtio-disk338 \
-device virtio-blk-pci,bus=pci.1,addr=0x18,drive=drive-virtio-disk338,id=virtio-disk338 \
-drive file=/var/lib/libvirt/images/disk-m-b.img,if=none,id=drive-virtio-disk339 \
-device virtio-blk-pci,bus=pci.1,addr=0x19,drive=drive-virtio-disk339,id=virtio-disk339 \
-drive file=/var/lib/libvirt/images/disk-m-c.img,if=none,id=drive-virtio-disk340 \
-device virtio-blk-pci,bus=pci.1,addr=0x1a,drive=drive-virtio-disk340,id=virtio-disk340 \
-drive file=/var/lib/libvirt/images/disk-m-d.img,if=none,id=drive-virtio-disk341 \
-device virtio-blk-pci,bus=pci.1,addr=0x1b,drive=drive-virtio-disk341,id=virtio-disk341 \
-drive file=/var/lib/libvirt/images/disk-n-a.img,if=none,id=drive-virtio-disk364 \
-device virtio-blk-pci,bus=pci.1,addr=0x1c,drive=drive-virtio-disk364,id=virtio-disk364 \
-drive file=/var/lib/libvirt/images/disk-n-b.img,if=none,id=drive-virtio-disk365 \
-device virtio-blk-pci,bus=pci.1,addr=0x1d,drive=drive-virtio-disk365,id=virtio-disk365 \
-drive file=/var/lib/libvirt/images/disk-n-c.img,if=none,id=drive-virtio-disk366 \
-device virtio-blk-pci,bus=pci.1,addr=0x1e,drive=drive-virtio-disk366,id=virtio-disk366 \
-drive file=/var/lib/libvirt/images/disk-n-d.img,if=none,id=drive-virtio-disk367 \
-device virtio-blk-pci,bus=pci.1,addr=0x1f,drive=drive-virtio-disk367,id=virtio-disk367 \
-drive file=/var/lib/libvirt/images/disk-o-a.img,if=none,id=drive-virtio-disk390 \
-device virtio-blk-pci,bus=pci.2,addr=0x1,drive=drive-virtio-disk390,id=virtio-disk390 \
-drive file=/var/lib/libvirt/images/disk-o-b.img,if=none,id=drive-virtio-disk391 \
-device virtio-blk-pci,bus=pci.2,addr=0x2,drive=drive-virtio-disk391,id=virtio-disk391 \
-drive file=/var/lib/libvirt/images/disk-o-c.img,if=none,id=drive-virtio-disk392 \
-device virtio-blk-pci,bus=pci.2,addr=0x3,drive=drive-virtio-disk392,id=virtio-disk392 \
-drive file=/var/lib/libvirt/images/disk-o-d.img,if=none,id=drive-virtio-disk393 \
-device virtio-blk-pci,bus=pci.2,addr=0x4,drive=drive-virtio-disk393,id=virtio-disk393 \
-drive file=/var/lib/libvirt/images/disk-p-a.img,if=none,id=drive-virtio-disk416 \
-device virtio-blk-pci,bus=pci.2,addr=0x5,drive=drive-virtio-disk416,id=virtio-disk416 \
-drive file=/var/lib/libvirt/images/disk-p-b.img,if=none,id=drive-virtio-disk417 \
-device virtio-blk-pci,bus=pci.2,addr=0x6,drive=drive-virtio-disk417,id=virtio-disk417 \
-drive file=/var/lib/libvirt/images/disk-p-c.img,if=none,id=drive-virtio-disk418 \
-device virtio-blk-pci,bus=pci.2,addr=0x7,drive=drive-virtio-disk418,id=virtio-disk418 \
-drive file=/var/lib/libvirt/images/disk-p-d.img,if=none,id=drive-virtio-disk419 \
-device virtio-blk-pci,bus=pci.2,addr=0x8,drive=drive-virtio-disk419,id=virtio-disk419 \
-drive file=/var/lib/libvirt/images/disk-q-a.img,if=none,id=drive-virtio-disk442 \
-device virtio-blk-pci,bus=pci.2,addr=0x9,drive=drive-virtio-disk442,id=virtio-disk442 \
-drive file=/var/lib/libvirt/images/disk-q-b.img,if=none,id=drive-virtio-disk443 \
-device virtio-blk-pci,bus=pci.2,addr=0xa,drive=drive-virtio-disk443,id=virtio-disk443 \
-drive file=/var/lib/libvirt/images/disk-q-c.img,if=none,id=drive-virtio-disk444 \
-device virtio-blk-pci,bus=pci.2,addr=0xb,drive=drive-virtio-disk444,id=virtio-disk444 \
-drive file=/var/lib/libvirt/images/disk-q-d.img,if=none,id=drive-virtio-disk445 \
-device virtio-blk-pci,bus=pci.2,addr=0xc,drive=drive-virtio-disk445,id=virtio-disk445 \
-drive file=/var/lib/libvirt/images/disk-r-a.img,if=none,id=drive-virtio-disk468 \
-device virtio-blk-pci,bus=pci.2,addr=0xd,drive=drive-virtio-disk468,id=virtio-disk468 \
-drive file=/var/lib/libvirt/images/disk-r-b.img,if=none,id=drive-virtio-disk469 \
-device virtio-blk-pci,bus=pci.2,addr=0xe,drive=drive-virtio-disk469,id=virtio-disk469 \
-drive file=/var/lib/libvirt/images/disk-r-c.img,if=none,id=drive-virtio-disk470 \
-device virtio-blk-pci,bus=pci.2,addr=0xf,drive=drive-virtio-disk470,id=virtio-disk470 \
-drive file=/var/lib/libvirt/images/disk-r-d.img,if=none,id=drive-virtio-disk471 \
-device virtio-blk-pci,bus=pci.2,addr=0x10,drive=drive-virtio-disk471,id=virtio-disk471 \
-drive file=/var/lib/libvirt/images/disk-s-a.img,if=none,id=drive-virtio-disk494 \
-device virtio-blk-pci,bus=pci.2,addr=0x11,drive=drive-virtio-disk494,id=virtio-disk494 \
-drive file=/var/lib/libvirt/images/disk-s-b.img,if=none,id=drive-virtio-disk495 \
-device virtio-blk-pci,bus=pci.2,addr=0x12,drive=drive-virtio-disk495,id=virtio-disk495 \
-drive file=/var/lib/libvirt/images/disk-s-c.img,if=none,id=drive-virtio-disk496 \
-device virtio-blk-pci,bus=pci.2,addr=0x13,drive=drive-virtio-disk496,id=virtio-disk496 \
-drive file=/var/lib/libvirt/images/disk-s-d.img,if=none,id=drive-virtio-disk497 \
-device virtio-blk-pci,bus=pci.2,addr=0x14,drive=drive-virtio-disk497,id=virtio-disk497 \
-drive file=/var/lib/libvirt/images/disk-t-a.img,if=none,id=drive-virtio-disk520 \
-device virtio-blk-pci,bus=pci.2,addr=0x15,drive=drive-virtio-disk520,id=virtio-disk520 \
-drive file=/var/lib/libvirt/images/disk-t-b.img,if=none,id=drive-virtio-disk521 \
-device virtio-blk-pci,bus=pci.2,addr=0x16,drive=drive-virtio-disk521,id=virtio-disk521 \
-drive file=/var/lib/libvirt/images/disk-t-c.img,if=none,id=drive-virtio-disk522 \
-device virtio-blk-pci,bus=pci.2,addr=0x17,drive=drive-virtio-disk522,id=virtio-disk522 \
-drive file=/var/lib/libvirt/images/disk-t-d.img,if=none,id=drive-virtio-disk523 \
-device virtio-blk-pci,bus=pci.2,addr=0x18,drive=drive-virtio-disk523,id=virtio-disk523 \
-drive file=/var/lib/libvirt/images/disk-u-a.img,if=none,id=drive-virtio-disk546 \
-device virtio-blk-pci,bus=pci.2,addr=0x19,drive=drive-virtio-disk546,id=virtio-disk546 \
-drive file=/var/lib/libvirt/images/disk-u-b.img,if=none,id=drive-virtio-disk547 \
-device virtio-blk-pci,bus=pci.2,addr=0x1a,drive=drive-virtio-disk547,id=virtio-disk547 \
-drive file=/var/lib/libvirt/images/disk-u-c.img,if=none,id=drive-virtio-disk548 \
-device virtio-blk-pci,bus=pci.2,addr=0x1b,drive=drive-virtio-disk548,id=virtio-disk548 \
-drive file=/var/lib/libvirt/images/disk-u-d.img,if=none,id=drive-virtio-disk549 \
-device virtio-blk-pci,bus=pci.2,addr=0x1c,drive=drive-virtio-disk549,id=virtio-disk549 \
-drive file=/var/lib/libvirt/images/disk-v-a.img,if=none,id=drive-virtio-disk572 \
-device virtio-blk-pci,bus=pci.2,addr=0x1d,drive=drive-virtio-disk572,id=virtio-disk572 \
-drive file=/var/lib/libvirt/images/disk-v-b.img,if=none,id=drive-virtio-disk573 \
-device virtio-blk-pci,bus=pci.2,addr=0x1e,drive=drive-virtio-disk573,id=virtio-disk573 \
-drive file=/var/lib/libvirt/images/disk-v-c.img,if=none,id=drive-virtio-disk574 \
-device virtio-blk-pci,bus=pci.2,addr=0x1f,drive=drive-virtio-disk574,id=virtio-disk574 \
-drive file=/var/lib/libvirt/images/disk-v-d.img,if=none,id=drive-virtio-disk575 \
-device virtio-blk-pci,bus=pci.3,addr=0x1,drive=drive-virtio-disk575,id=virtio-disk575 \
-drive file=/var/lib/libvirt/images/disk-w-a.img,if=none,id=drive-virtio-disk598 \
-device virtio-blk-pci,bus=pci.3,addr=0x2,drive=drive-virtio-disk598,id=virtio-disk598 \
-drive file=/var/lib/libvirt/images/disk-w-b.img,if=none,id=drive-virtio-disk599 \
-device virtio-blk-pci,bus=pci.3,addr=0x3,drive=drive-virtio-disk599,id=virtio-disk599 \
-drive file=/var/lib/libvirt/images/disk-w-c.img,if=none,id=drive-virtio-disk600 \
-device virtio-blk-pci,bus=pci.3,addr=0x4,drive=drive-virtio-disk600,id=virtio-disk600 \
-drive file=/var/lib/libvirt/images/disk-w-d.img,if=none,id=drive-virtio-disk601 \
-device virtio-blk-pci,bus=pci.3,addr=0x5,drive=drive-virtio-disk601,id=virtio-disk601 \
-drive file=/var/lib/libvirt/images/disk-x-a.img,if=none,id=drive-virtio-disk624 \
-device virtio-blk-pci,bus=pci.3,addr=0x6,drive=drive-virtio-disk624,id=virtio-disk624 \
-drive file=/var/lib/libvirt/images/disk-x-b.img,if=none,id=drive-virtio-disk625 \
-device virtio-blk-pci,bus=pci.3,addr=0x7,drive=drive-virtio-disk625,id=virtio-disk625 \
-drive file=/var/lib/libvirt/images/disk-x-c.img,if=none,id=drive-virtio-disk626 \
-device virtio-blk-pci,bus=pci.3,addr=0x8,drive=drive-virtio-disk626,id=virtio-disk626 \
-drive file=/var/lib/libvirt/images/disk-x-d.img,if=none,id=drive-virtio-disk627 \
-device virtio-blk-pci,bus=pci.3,addr=0x9,drive=drive-virtio-disk627,id=virtio-disk627 \
-drive file=/var/lib/libvirt/images/disk-y-a.img,if=none,id=drive-virtio-disk650 \
-device virtio-blk-pci,bus=pci.3,addr=0xa,drive=drive-virtio-disk650,id=virtio-disk650 \
-drive file=/var/lib/libvirt/images/disk-y-b.img,if=none,id=drive-virtio-disk651 \
-device virtio-blk-pci,bus=pci.3,addr=0xb,drive=drive-virtio-disk651,id=virtio-disk651 \
-drive file=/var/lib/libvirt/images/disk-y-c.img,if=none,id=drive-virtio-disk652 \
-device virtio-blk-pci,bus=pci.3,addr=0xc,drive=drive-virtio-disk652,id=virtio-disk652 \
-drive file=/var/lib/libvirt/images/disk-y-d.img,if=none,id=drive-virtio-disk653 \
-device virtio-blk-pci,bus=pci.3,addr=0xd,drive=drive-virtio-disk653,id=virtio-disk653 \
-drive file=/var/lib/libvirt/images/disk-z-a.img,if=none,id=drive-virtio-disk676 \
-device virtio-blk-pci,bus=pci.3,addr=0xe,drive=drive-virtio-disk676,id=virtio-disk676 \
-drive file=/var/lib/libvirt/images/disk-z-b.img,if=none,id=drive-virtio-disk677 \
-device virtio-blk-pci,bus=pci.3,addr=0xf,drive=drive-virtio-disk677,id=virtio-disk677 \
-drive file=/var/lib/libvirt/images/disk-z-c.img,if=none,id=drive-virtio-disk678 \
-device virtio-blk-pci,bus=pci.3,addr=0x10,drive=drive-virtio-disk678,id=virtio-disk678 \
-drive file=/var/lib/libvirt/images/disk-z-d.img,if=none,id=drive-virtio-disk679 \
-device virtio-blk-pci,bus=pci.3,addr=0x11,drive=drive-virtio-disk679,id=virtio-disk679
......@@ -992,6 +992,8 @@ mymain(void)
DO_TEST("pci-autoadd-addr", QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_PCI_BRIDGE);
DO_TEST("pci-autoadd-idx", QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_PCI_BRIDGE);
DO_TEST("pci-bridge-many-disks",
QEMU_CAPS_DEVICE, QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE_PCI_BRIDGE);
DO_TEST("hostdev-scsi-lsi", QEMU_CAPS_DRIVE,
QEMU_CAPS_DEVICE, QEMU_CAPS_DRIVE,
......
......@@ -291,6 +291,7 @@ mymain(void)
DO_TEST("tpm-passthrough");
DO_TEST("pci-bridge");
DO_TEST_DIFFERENT("pci-bridge-many-disks");
DO_TEST_DIFFERENT("pci-autoadd-addr");
DO_TEST_DIFFERENT("pci-autoadd-idx");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册