From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 0E7581025 for ; Thu, 1 May 2014 19:18:39 +0200 (CEST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s41HIgFv023810 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 1 May 2014 13:18:43 -0400 Received: from x220.localdomain (ovpn-113-197.phx2.redhat.com [10.3.113.197]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with SMTP id s41H0Fk9001921; Thu, 1 May 2014 13:00:15 -0400 Date: Thu, 1 May 2014 10:00:15 -0700 From: Chris Wright To: Stephen Hemminger Message-ID: <20140501170015.GC24396@x220.localdomain> References: <20140501091241.4786e99c@nehalam.linuxnetplumber.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140501091241.4786e99c@nehalam.linuxnetplumber.net> User-Agent: Mutt/1.5.21+63 (2f2ebc24920d) (2011-07-01) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH 00/16] [RFC] [VFIO] Add VFIO support to DPDK 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: Thu, 01 May 2014 17:18:40 -0000 * Stephen Hemminger (stephen@networkplumber.org) wrote: > On Thu, 1 May 2014 11:05:38 +0000 > "Burakov, Anatoly" wrote: > > > This patchset adds support for using VFIO instead of IGB_UIO to > > map the device BARs. > > > > VFIO is a kernel 3.6+ driver allowing secure DMA from userspace > > by means of using IOMMU instead of working directly with physical > > memory like igb_uio does. > > > > Short summary: > > * Adding support for VFIO in EAL PCI code > > * Adding new command-line parameter for VFIO interrupt type > > * Adding support for VFIO in setup.sh > > * Renaming igb_uio_bind to dpdk_nic_bind and adding support for > > VFIO there > > * Removing PCI ID list from igb_uio, effectively making it another > > generic PCI driver similar to pci_stub, vfio-pci et al > > * Adding autotest for VFIO interrupt types > > * Making igb_uio and VFIO compilation optional > > > > I'm submitting this as an RFC because this patch is based off > > current dpdk.org branch with David Marchand's RTE_EAL_UNBIND_PORTS > > patchset. IOW, this will *not* apply to the dpdk.org tree *unless* you > > also apply David's patches beforehand. > > > > Signed-off by: Anatoly Burakov > > > > Anatoly Burakov (16): > > Separate igb_uio mapping into a separate file > > Distinguish between legitimate failures and non-fatal errors > > Rename RTE_PCI_DRV_NEED_IGB_UIO to RTE_PCI_DRV_NEED_MAPPING > > Make igb_uio compilation optional > > Moved interrupt type out of igb_uio > > Add support for VFIO in Linuxapp targets > > Add support for VFIO interrupts, add VFIO header > > Add support for mapping devices through VFIO. > > Enable VFIO device binding > > Added support for selecting VFIO interrupt type from EAL command-line > > Make --no-huge use mmap instead of malloc. > > Adding unit tests for VFIO EAL command-line parameter > > Removed PCI ID table from igb_uio > > Renamed igb_uio_bind to dpdk_nic_bind > > Added support for VFIO drivers in dpdk_nic_bind.py > > Adding support for VFIO to setup.sh > > > > app/test/test_eal_flags.c | 24 + > > app/test/test_pci.c | 4 +- > > config/defconfig_i686-default-linuxapp-gcc | 2 + > > config/defconfig_i686-default-linuxapp-icc | 2 + > > config/defconfig_x86_64-default-linuxapp-gcc | 2 + > > config/defconfig_x86_64-default-linuxapp-icc | 2 + > > lib/librte_eal/bsdapp/eal/eal_pci.c | 2 +- > > lib/librte_eal/common/Makefile | 1 + > > lib/librte_eal/common/eal_common_pci.c | 17 +- > > lib/librte_eal/common/include/rte_pci.h | 7 +- > > .../common/include/rte_pci_dev_feature_defs.h | 46 ++ > > .../common/include/rte_pci_dev_features.h | 42 ++ > > lib/librte_eal/linuxapp/Makefile | 2 + > > lib/librte_eal/linuxapp/eal/Makefile | 6 +- > > lib/librte_eal/linuxapp/eal/eal.c | 35 + > > lib/librte_eal/linuxapp/eal/eal_interrupts.c | 203 +++++- > > lib/librte_eal/linuxapp/eal/eal_memory.c | 8 +- > > lib/librte_eal/linuxapp/eal/eal_pci.c | 480 ++------------ > > lib/librte_eal/linuxapp/eal/eal_pci_uio.c | 416 ++++++++++++ > > lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 709 +++++++++++++++++++++ > > lib/librte_eal/linuxapp/eal/eal_pci_vfio_socket.c | 367 +++++++++++ > > .../linuxapp/eal/include/eal_internal_cfg.h | 3 + > > lib/librte_eal/linuxapp/eal/include/eal_pci_init.h | 120 ++++ > > lib/librte_eal/linuxapp/eal/include/eal_vfio.h | 55 ++ > > .../linuxapp/eal/include/exec-env/rte_interrupts.h | 7 +- > > lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 70 +- > > lib/librte_pmd_e1000/em_ethdev.c | 2 +- > > lib/librte_pmd_e1000/igb_ethdev.c | 4 +- > > lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 4 +- > > lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c | 2 +- > > tools/dpdk_nic_bind.py | 500 +++++++++++++++ > > tools/igb_uio_bind.py | 485 -------------- > > tools/setup.sh | 168 ++++- > > 33 files changed, 2797 insertions(+), 1000 deletions(-) > > create mode 100644 lib/librte_eal/common/include/rte_pci_dev_feature_defs.h > > create mode 100644 lib/librte_eal/common/include/rte_pci_dev_features.h > > create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_uio.c > > create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_vfio.c > > create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_vfio_socket.c > > create mode 100644 lib/librte_eal/linuxapp/eal/include/eal_pci_init.h > > create mode 100644 lib/librte_eal/linuxapp/eal/include/eal_vfio.h > > create mode 100755 tools/dpdk_nic_bind.py > > delete mode 100755 tools/igb_uio_bind.py > > Will this work in guest? or only on bare metal? hmm, vfio requires iommu support, however virtio pmd?