qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 1/1] s390 pci infrastructure modelling


From: zyimin
Subject: Re: [Qemu-devel] [PATCH v4 1/1] s390 pci infrastructure modelling
Date: Mon, 13 Jul 2015 10:49:39 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0



On 7/9/2015 5:57 PM, Michael S. Tsirkin wrote:
On Thu, Jul 09, 2015 at 05:30:08PM +0800, zyimin wrote:

On 7/9/2015 3:48 PM, Michael S. Tsirkin wrote:
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?
uid is a new feature on s390 arch for pci card management.
But support of uid on OS level has not been ready.
Does this matter here? I thought it's an arbitrary order -
just making it stable is enough?
I think there i sno matter here. Because uid is just for zpci management of firmware and both of fid and uid are unique for all zpci devices attached to one guest. FID maybe change after s390 machine restart. If machine reboot, host will scan PCI devices again
and will obtain new FID of every zPCI devices. For guest, it is isolated.

+         */
+        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.

These code were written by Hong Bo. I think he wants to use zpci->fid to
sort pci cards.
"index" what you talked is the order of hotplug? right? If it is, I think
this code actually
can change the index.
I don't really understand what you are saying. id is how guest looks
up the device, right? it shouldn't change really.
For guest, it will use a special instruction to get pci info of all attached pci devices. For example, there are two pci devices which already are attached to the guest.
PCI1: fid=1, uid=1
PCI2: fid=3, uid=3
Then, you hotplug a new pci device to the guest:
PCI3: fid=2, uid=2
Although PCI2 is at the 3rd position of zpci_list, it will not effect guest looks up the device. Because guest uses fid and fh to get zpci info and do pci operations. I think fid and uid is just
the explicit property what you said.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]