On Wed, Jul 08, 2015 at 01:44:55PM +0800, Yi Min Zhao wrote: > @@ -588,9 +606,172 @@ static const TypeInfo s390_pcihost_info = { > } > }; > > +static void s390_pci_device_hot_plug(HotplugHandler *hotplug_dev, > + DeviceState *dev, Error **errp) > +{ > + S390PCIBusDevice *zpci = S390_PCI_DEVICE(dev); > + S390PCIBusDevice *tmp; > + S390PCIFacility *f = S390_PCI_FACILITY( > + object_resolve_path(TYPE_S390_PCI_FACILITY, NULL)); > + > + QTAILQ_FOREACH(tmp, &f->zpci_list, next) { > + /* for now, we use fid to sort the list, need to use uid instead > + * when uid is ready.
What does ready mean in this context? > + */ > + if (tmp->fid > zpci->fid) { > + break; > + } > + } > + > + if (tmp) { > + QTAILQ_INSERT_BEFORE(tmp, zpci, next); > + } else { > + QTAILQ_INSERT_TAIL(&f->zpci_list, zpci, next); > + } > + f->token_valid = false; > +} This still means hotplug will change the index. How about just using an explicit property to set the index? Harder to use but keeps code simple. -- MST