if ((cidx = virDomainControllerFindByPCIAddress(def, pci_address)) >= 0)
controller = def->controllers[cidx];
+ if (!controller && ccw_addr) {
+ cidx = virDomainControllerFindByCCWAddress(def, ccw_addr);
+ if (cidx >= 0)
+ controller = def->controllers[cidx];
+ }
+
for (i = 0; i < def->ndisks; i++) {
vdisk = def->disks[i];
if (vdisk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
return -1;
}
+int
+virDomainControllerFindByCCWAddress(virDomainDefPtr def,
+ virDomainDeviceCCWAddressPtr addr)
+{
+ size_t i;
+
+ for (i = 0; i < def->ncontrollers; i++) {
+ virDomainDeviceInfoPtr info = &def->controllers[i]->info;
+
+ if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW &&
+ virDomainDeviceCCWAddressEqual(&info->addr.ccw, addr))
+ return i;
+ }
+
+ return -1;
+}
+
int
virDomainControllerFindByPCIAddress(virDomainDefPtr def,
virPCIDeviceAddressPtr addr)
virDomainControllerDefPtr controller);
int virDomainControllerFind(const virDomainDef *def, int type, int idx);
int virDomainControllerFindByType(virDomainDefPtr def, int type);
+int virDomainControllerFindByCCWAddress(virDomainDefPtr def,
+ virDomainDeviceCCWAddressPtr addr);
int virDomainControllerFindByPCIAddress(virDomainDefPtr def,
virPCIDeviceAddressPtr addr);
int virDomainControllerFindUnusedIndex(virDomainDef const *def, int type);