From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jike Song Subject: Re: [RFC v2 0/4] adding mdev bus and vfio support Date: Wed, 07 Sep 2016 10:22:26 +0800 Message-ID: <57CF79E2.5060902@intel.com> References: <1472804172-25542-1-git-send-email-jike.song@intel.com> <20160902090352.53afdab1@t450s.home> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: kevin.tian@intel.com, cjia@nvidia.com, kvm@vger.kernel.org, qemu-devel@nongnu.org, zhenyuw@linux.intel.com, kwankhede@nvidia.com, zhiyuan.lv@intel.com, pbonzini@redhat.com, guangrong.xiao@linux.intel.com, bjsdjshi@linux.vnet.ibm.com, kraxel@redhat.com To: Alex Williamson Return-path: In-Reply-To: <20160902090352.53afdab1@t450s.home> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: "Qemu-devel" List-Id: kvm.vger.kernel.org On 09/02/2016 11:03 PM, Alex Williamson wrote: > On Fri, 2 Sep 2016 16:16:08 +0800 > Jike Song wrote: > >> This patchset is based on NVidia's "Add Mediated device support" series, version 6: >> >> http://www.spinics.net/lists/kvm/msg136472.html > > > Hi Jike, > > I'm thrilled by your active participation here, but I'm confused which > versions I should be reviewing and where the primary development is > going. Kirti sent v7 a week ago, so I would have expected a revision > based on that rather than a re-write based on v6 plus incorporation of a > few of Kirti's patches directly. Hi Alex, [Sorry! replied this on Monday but it was silently dropped by the our firewall] The v1 of this patchset was send as incremental ones, basing on Nvidia's v6, to demonstrate how is it possible and beneficial to: 1, Introduce an independent device between physical and mdev; 2, Simplify vfio-mdev and make it the most flexible for vendor drivers; Unfortunately neither was understood or adopted in v7: http://www.spinics.net/lists/kvm/msg137081.html So here came the v2, as a standalone series, to give a whole and straight demonstration. The reason of still basing on v6: - Addressed all v6 comments (except the iommu part); - There is no comments yet for v7 (except the sysfs ones); > I liked the last version of these > changes a lot, but we need to figure out how to combine development > because we do not have infinite cycles for review available :-\ Thanks! Fully understand. Here is the dilemma: v6 is an obsolete version to work upon, v7 is still not at the direction we prefer. We would be highly glad and thankful if Neo/Kirti would adopt the code in their next version, which will certainly form a more simple and consolidated base for future co-development; otherwise and we could at least discuss the concerns, in case of any. -- Thanks, Jike >> >> >> Key Changes from Nvidia v6: >> >> - Introduced an independent struct device to host device, thereby >> formed a physical-host-mdev hierarchy, and highly reused Linux >> driver core support; >> >> - Added online/offline to mdev_bus_type, leveraging the 'online' >> attr support from Linux driver core; >> >> - Removed mdev_class and other unecessary stuff; >> >> /* >> * Given the changes above, the code volume of mdev core driver >> * dramatically reduced by ~50%. >> */ >> >> >> - Interfaces between vfio_mdev and vendor driver are high-level, >> e.g. ioctl instead of get_irq_info/set_irq_info and reset, >> start/stop became mdev oriented, etc.; >> >> /* >> * Given the changes above, the code volume of mdev core driver >> * dramatically reduced by ~64%. >> */ >> >> >> Test >> >> - Tested with KVMGT >> >> TODO >> >> - Re-implement the attribute group of host device as long as the >> sysfs hierarchy in discussion gets finalized; >> >> - Move common routines from current vfio-pci into a higher location, >> export them for various VFIO bus drivers and/or mdev vendor drivers; >> >> - Add implementation examples for vendor drivers to Documentation; >> >> - Refine IOMMU changes >> >> >> >> Jike Song (2): >> Mediated device Core driver >> vfio: VFIO bus driver for MDEV devices >> >> Kirti Wankhede (2): >> vfio iommu: Add support for mediated devices >> docs: Add Documentation for Mediated devices >> >> Documentation/vfio-mediated-device.txt | 203 ++++++++++++++ >> drivers/vfio/Kconfig | 1 + >> drivers/vfio/Makefile | 1 + >> drivers/vfio/mdev/Kconfig | 18 ++ >> drivers/vfio/mdev/Makefile | 5 + >> drivers/vfio/mdev/mdev_core.c | 250 +++++++++++++++++ >> drivers/vfio/mdev/mdev_driver.c | 155 ++++++++++ >> drivers/vfio/mdev/mdev_private.h | 29 ++ >> drivers/vfio/mdev/mdev_sysfs.c | 155 ++++++++++ >> drivers/vfio/mdev/vfio_mdev.c | 187 ++++++++++++ >> drivers/vfio/vfio.c | 82 ++++++ >> drivers/vfio/vfio_iommu_type1.c | 499 +++++++++++++++++++++++++++++---- >> include/linux/mdev.h | 159 +++++++++++ >> include/linux/vfio.h | 13 +- >> 14 files changed, 1709 insertions(+), 48 deletions(-) >> create mode 100644 Documentation/vfio-mediated-device.txt >> create mode 100644 drivers/vfio/mdev/Kconfig >> create mode 100644 drivers/vfio/mdev/Makefile >> create mode 100644 drivers/vfio/mdev/mdev_core.c >> create mode 100644 drivers/vfio/mdev/mdev_driver.c >> create mode 100644 drivers/vfio/mdev/mdev_private.h >> create mode 100644 drivers/vfio/mdev/mdev_sysfs.c >> create mode 100644 drivers/vfio/mdev/vfio_mdev.c >> create mode 100644 include/linux/mdev.h >> > From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42065) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhSXA-0001nW-O8 for qemu-devel@nongnu.org; Tue, 06 Sep 2016 22:24:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bhSX6-0002tA-I3 for qemu-devel@nongnu.org; Tue, 06 Sep 2016 22:24:15 -0400 Received: from mga03.intel.com ([134.134.136.65]:51414) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhSX6-0002t4-5S for qemu-devel@nongnu.org; Tue, 06 Sep 2016 22:24:12 -0400 Message-ID: <57CF79E2.5060902@intel.com> Date: Wed, 07 Sep 2016 10:22:26 +0800 From: Jike Song MIME-Version: 1.0 References: <1472804172-25542-1-git-send-email-jike.song@intel.com> <20160902090352.53afdab1@t450s.home> In-Reply-To: <20160902090352.53afdab1@t450s.home> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v2 0/4] adding mdev bus and vfio support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alex Williamson Cc: kwankhede@nvidia.com, cjia@nvidia.com, qemu-devel@nongnu.org, kvm@vger.kernel.org, bjsdjshi@linux.vnet.ibm.com, kevin.tian@intel.com, guangrong.xiao@linux.intel.com, zhenyuw@linux.intel.com, zhiyuan.lv@intel.com, pbonzini@redhat.com, kraxel@redhat.com On 09/02/2016 11:03 PM, Alex Williamson wrote: > On Fri, 2 Sep 2016 16:16:08 +0800 > Jike Song wrote: > >> This patchset is based on NVidia's "Add Mediated device support" series, version 6: >> >> http://www.spinics.net/lists/kvm/msg136472.html > > > Hi Jike, > > I'm thrilled by your active participation here, but I'm confused which > versions I should be reviewing and where the primary development is > going. Kirti sent v7 a week ago, so I would have expected a revision > based on that rather than a re-write based on v6 plus incorporation of a > few of Kirti's patches directly. Hi Alex, [Sorry! replied this on Monday but it was silently dropped by the our firewall] The v1 of this patchset was send as incremental ones, basing on Nvidia's v6, to demonstrate how is it possible and beneficial to: 1, Introduce an independent device between physical and mdev; 2, Simplify vfio-mdev and make it the most flexible for vendor drivers; Unfortunately neither was understood or adopted in v7: http://www.spinics.net/lists/kvm/msg137081.html So here came the v2, as a standalone series, to give a whole and straight demonstration. The reason of still basing on v6: - Addressed all v6 comments (except the iommu part); - There is no comments yet for v7 (except the sysfs ones); > I liked the last version of these > changes a lot, but we need to figure out how to combine development > because we do not have infinite cycles for review available :-\ Thanks! Fully understand. Here is the dilemma: v6 is an obsolete version to work upon, v7 is still not at the direction we prefer. We would be highly glad and thankful if Neo/Kirti would adopt the code in their next version, which will certainly form a more simple and consolidated base for future co-development; otherwise and we could at least discuss the concerns, in case of any. -- Thanks, Jike >> >> >> Key Changes from Nvidia v6: >> >> - Introduced an independent struct device to host device, thereby >> formed a physical-host-mdev hierarchy, and highly reused Linux >> driver core support; >> >> - Added online/offline to mdev_bus_type, leveraging the 'online' >> attr support from Linux driver core; >> >> - Removed mdev_class and other unecessary stuff; >> >> /* >> * Given the changes above, the code volume of mdev core driver >> * dramatically reduced by ~50%. >> */ >> >> >> - Interfaces between vfio_mdev and vendor driver are high-level, >> e.g. ioctl instead of get_irq_info/set_irq_info and reset, >> start/stop became mdev oriented, etc.; >> >> /* >> * Given the changes above, the code volume of mdev core driver >> * dramatically reduced by ~64%. >> */ >> >> >> Test >> >> - Tested with KVMGT >> >> TODO >> >> - Re-implement the attribute group of host device as long as the >> sysfs hierarchy in discussion gets finalized; >> >> - Move common routines from current vfio-pci into a higher location, >> export them for various VFIO bus drivers and/or mdev vendor drivers; >> >> - Add implementation examples for vendor drivers to Documentation; >> >> - Refine IOMMU changes >> >> >> >> Jike Song (2): >> Mediated device Core driver >> vfio: VFIO bus driver for MDEV devices >> >> Kirti Wankhede (2): >> vfio iommu: Add support for mediated devices >> docs: Add Documentation for Mediated devices >> >> Documentation/vfio-mediated-device.txt | 203 ++++++++++++++ >> drivers/vfio/Kconfig | 1 + >> drivers/vfio/Makefile | 1 + >> drivers/vfio/mdev/Kconfig | 18 ++ >> drivers/vfio/mdev/Makefile | 5 + >> drivers/vfio/mdev/mdev_core.c | 250 +++++++++++++++++ >> drivers/vfio/mdev/mdev_driver.c | 155 ++++++++++ >> drivers/vfio/mdev/mdev_private.h | 29 ++ >> drivers/vfio/mdev/mdev_sysfs.c | 155 ++++++++++ >> drivers/vfio/mdev/vfio_mdev.c | 187 ++++++++++++ >> drivers/vfio/vfio.c | 82 ++++++ >> drivers/vfio/vfio_iommu_type1.c | 499 +++++++++++++++++++++++++++++---- >> include/linux/mdev.h | 159 +++++++++++ >> include/linux/vfio.h | 13 +- >> 14 files changed, 1709 insertions(+), 48 deletions(-) >> create mode 100644 Documentation/vfio-mediated-device.txt >> create mode 100644 drivers/vfio/mdev/Kconfig >> create mode 100644 drivers/vfio/mdev/Makefile >> create mode 100644 drivers/vfio/mdev/mdev_core.c >> create mode 100644 drivers/vfio/mdev/mdev_driver.c >> create mode 100644 drivers/vfio/mdev/mdev_private.h >> create mode 100644 drivers/vfio/mdev/mdev_sysfs.c >> create mode 100644 drivers/vfio/mdev/vfio_mdev.c >> create mode 100644 include/linux/mdev.h >> >