From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from wes1-so1.wedos.net (wes1-so1.wedos.net [46.28.106.15]) by dpdk.org (Postfix) with ESMTP id 30C465598 for ; Mon, 13 Jun 2016 15:07:31 +0200 (CEST) Received: from pcviktorin.fit.vutbr.cz (pcviktorin.fit.vutbr.cz [147.229.13.147]) by wes1-so1.wedos.net (Postfix) with ESMTPSA id 3rStNf6LNWzC5s; Mon, 13 Jun 2016 15:07:30 +0200 (CEST) From: Jan Viktorin To: dev@dpdk.org Cc: Jan Viktorin , Anatoly Burakov , David Marchand , Keith Wiles , Santosh Shukla , Stephen Hemminger , Shreyansh Jain Date: Mon, 13 Jun 2016 15:01:50 +0200 Message-Id: <1465822926-23742-1-git-send-email-viktorin@rehivetech.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1461937456-22943-1-git-send-email-viktorin@rehivetech.com> References: <1461937456-22943-1-git-send-email-viktorin@rehivetech.com> Subject: [dpdk-dev] [PATCH v2 00/16] Make VFIO support less dependent on PCI X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2016 13:07:31 -0000 Hello, here follows several patchs extracting the general VFIO code out of the PCI + VFIO code base. Usually, it's just move and rename of functions. The goal is to be able to extend for other Linux VFIO drivers then vfio-pci. That is especially vfio-platform. However, just the vfio-platform support may be insufficient because several platform devices require to call clk_prepare_enable which is not possible to be done from userspace and which is not being solved in the VFIO code base at the moment. Some patchs make just temporary changes to avoid breakages throughout the patch set (dma mapping). The most complicated patchs are: * eal/linux: extract setup logic out of pci_vfio_map_resource - separation of some setup code out of the pci_vfio_map_resource (which is otherwise quite PCI-specific) - it is required by the following one * eal/linux: move global vfio_cfg to eal_vfio.c - moving the vfio_cfg global variable out of the eal_pci_vfio together with the functions working with this variable I am not sure, how exactly is the mp_sync code intended to work. Should there be just a single socket connection (no matter how many bus-systems we support)? I assume it works this way so I've generalized the eal_pci_vfio_mp_sync. The vfio initialization is moved out of the rte_eal_pci_init into EAL. The code is now prepared for adding of other infrastructures such as the SoC that I've introduced in [1]. I've partially done this in my workspace. The VFIO code is quite complex and written in a spaghetti style so a more maintainance would be helpful. I've did my best to preserve the semantics (I hope) to be 100 % the same as before. Important: I didn't test whether it's working as I have no VFIO-enabled machine at the moment and the SoC infra is not so ready yet. [1] http://comments.gmane.org/gmane.comp.networking.dpdk.devel/30913 Regards Jan --- v2: * fixed missing ifdef VFIO_PRESENT - broke builds with VFIO disabled * fixed include of eal_private.h (A. Burakov) * fixed lost viable code (A. Burakov) * fixed typo "indentified" (A. Burakov) --- Jan Viktorin (16): vfio: fix include of eal_private.h to be local vfio: move VFIO-specific stuff to eal_vfio.h vfio: move common vfio constants to eal_vfio.h vfio: move vfio_iommu_type and dma_map functions to eal_vfio vfio: generalize pci_vfio_set_iommu_type vfio: generalize pci_vfio_has_supported_extensions vfio: move vfio-specific SOCKET_* constants vfio: generalize pci_vfio_get_container_fd vfio: generalize pci_vfio_get_group_no vfio: extract setup logic out of pci_vfio_map_resource vfio: move global vfio_cfg to eal_vfio.c vfio: fix typo in doc for vfio_setup_device vfio: make vfio_*_dma_map and iommu_types private vfio: rename and generalize eal_pci_vfio_mp_sync vfio: initialize vfio out of the PCI subsystem vfio: change VFIO init to be extendable lib/librte_eal/linuxapp/eal/Makefile | 5 +- lib/librte_eal/linuxapp/eal/eal.c | 33 ++ lib/librte_eal/linuxapp/eal/eal_pci.c | 17 +- lib/librte_eal/linuxapp/eal/eal_pci_init.h | 41 -- lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 517 +------------------ lib/librte_eal/linuxapp/eal/eal_vfio.c | 547 +++++++++++++++++++++ lib/librte_eal/linuxapp/eal/eal_vfio.h | 94 ++++ .../{eal_pci_vfio_mp_sync.c => eal_vfio_mp_sync.c} | 12 +- 8 files changed, 691 insertions(+), 575 deletions(-) create mode 100644 lib/librte_eal/linuxapp/eal/eal_vfio.c rename lib/librte_eal/linuxapp/eal/{eal_pci_vfio_mp_sync.c => eal_vfio_mp_sync.c} (97%) -- 2.8.0