From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) by dpdk.org (Postfix) with ESMTP id C79F9AFD6 for ; Thu, 1 May 2014 18:12:41 +0200 (CEST) Received: by mail-pa0-f45.google.com with SMTP id kq14so3913512pab.4 for ; Thu, 01 May 2014 09:12:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=+S8fSSI0HnIlyZI27sIY9fcNff4AJZJnk3uL4TyD3kk=; b=h5rbLzPs3hngiomOfIdJnIu8SoX9ml2GLOcuTwg8NZ+WThvGB3hJqzMu8I9soUzkrG soYwEQjxGsvv8cqSEe3oRsQaprwblBVK14+i3OiZunJLiKRH2NnMirtKw6mcobejAH/P WVCNFaRadPhIjFRQvBl+H3R7vZRgTSB5o6oNsgtumN3rvWPavwXYeycxQ96zA2p0nG/V 0snyH1xjq7EV1bQ7eKh8iOQM348qtXoMrxYf6vOxYA7BhAbho92vZjKy8CnPJetwhmP5 cFvCBXr+sOcQM2VCqAJF5NuztlhCnEBqydkRD8ac43NPEe9W/ZKwQwUjhJpZVIlAIt1d k6lg== X-Gm-Message-State: ALoCoQkBt1p6jpI4ue31/4A4YH0ZffAfah+0UUdl3tAegsHSwMpAlOpTKklji7SFrF0CxYcuc+BS X-Received: by 10.66.146.170 with SMTP id td10mr22790766pab.105.1398960765127; Thu, 01 May 2014 09:12:45 -0700 (PDT) Received: from nehalam.linuxnetplumber.net (static-50-53-83-51.bvtn.or.frontiernet.net. [50.53.83.51]) by mx.google.com with ESMTPSA id ph1sm160366199pac.14.2014.05.01.09.12.44 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 01 May 2014 09:12:44 -0700 (PDT) Date: Thu, 1 May 2014 09:12:41 -0700 From: Stephen Hemminger To: "Burakov, Anatoly" Message-ID: <20140501091241.4786e99c@nehalam.linuxnetplumber.net> In-Reply-To: References: X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.23; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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 16:12:42 -0000 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?