From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50788) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSM4I-0001Ym-RH for qemu-devel@nongnu.org; Thu, 20 Aug 2015 05:23:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZSM4B-0003wI-MQ for qemu-devel@nongnu.org; Thu, 20 Aug 2015 05:23:30 -0400 Received: from e28smtp09.in.ibm.com ([122.248.162.9]:35196) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSM4A-0003vA-UR for qemu-devel@nongnu.org; Thu, 20 Aug 2015 05:23:23 -0400 Received: from /spool/local by e28smtp09.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 20 Aug 2015 14:53:18 +0530 Received: from d28relay01.in.ibm.com (d28relay01.in.ibm.com [9.184.220.58]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id 4B8391258060 for ; Thu, 20 Aug 2015 14:52:35 +0530 (IST) Received: from d28av01.in.ibm.com (d28av01.in.ibm.com [9.184.220.63]) by d28relay01.in.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t7K9N5gB15073310 for ; Thu, 20 Aug 2015 14:53:06 +0530 Received: from d28av01.in.ibm.com (localhost [127.0.0.1]) by d28av01.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t7K9N55K018891 for ; Thu, 20 Aug 2015 14:53:05 +0530 From: Yi Min Zhao Date: Thu, 20 Aug 2015 17:22:23 +0800 Message-Id: <1440062544-13960-1-git-send-email-zyimin@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH v5 0/1] s390 pci infrastructure modeling List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: cornelia.huck@de.ibm.com, borntraeger@de.ibm.com, Yi Min Zhao , agraf@suse.de, mst@redhat.com From: Yi Min Zhao This patch extends the current s390 pci implementation to provide more flexibility in configuration of s390 specific device handling. For each vfio pci device, I create a zpci device to store s390 specific informations. And attach all of these special zpci devices to the s390 facility bus. A zpci device references the corresponding PCI device via device id. The new design allows to define multiple host bridges, each host bridge could hold 32 zpci devices at most. Add a new property named index to s390-pcihost device and must assign a unique value to it in qemu command line. The topology for this implementation could be: dev: s390-pcihost, id "" index=1 bus: pci.0 type PCI dev: vfio-pci, id "vpci1" host = "0000:00:00.0" ...... dev: vfio-pci, id "vpci2" host = "0001:00:00.0" ...... dev: s390-pci-facility, id "" bus: s390-pci-fac-bus.0 type s390-pci-fac-bus dev: zpci, id "zpci1" fid = 1 (0x1) uid = 2 (0x2) pci_id = "vpci1" dev: zpci, id "zpci2" fid = 6 (0x6) uid = 7 (0x7) pci_id = "vpci2" To make the review easier, I keep all of the old names, such as S390PCIBusDevice to name a zpci device. I will make a cleanup patch later to change these names to a more suitable name. Comparing to v4, this patch does the following change: 1.Add index property to s390-pcihost device. 2.Add index to s390PCIBusDevice. Its value is assigned by logical OR s390-pcihost device's index and pci slot. 3.Add three usable macros to get zpci index and s390pcihost index. 4.Add a bool member to s390PCIBustDevice named "available" to judge whether the relationship of zpci and vfio pci is established. This change fixed a bug generated by previous code in case that only define zpci device and then hot unplug it will fail. 5.Rework s390_pci_find_dev_by_idx function. 6.Rework s390_pci_device_hot_unplug_request function to be more stable. 7.Rework s390_pci_device_unrealize function to make the process of pci device unplug more logical and stable. Comparing to v3, this patch does the following change: 1.Exchange vfio-pci and zpci definitions. Define zpci device firstly then define vfio-pci device. 2.Unplug either vfio-pci device or zpci device can remove both of them. Yi Min Zhao (1): s390x: pci infrastructure modeling hw/s390x/s390-pci-bus.c | 379 ++++++++++++++++++++++++++++++++++---------- hw/s390x/s390-pci-bus.h | 54 ++++++- hw/s390x/s390-pci-inst.c | 80 ++++++---- hw/s390x/s390-virtio-ccw.c | 5 +- 4 files changed, 392 insertions(+), 126 deletions(-) -- 1.7.9